我正在嘗試加載一個包含 2 列的 .csv 檔案。第一列有浮點數,第二列有對應于第一列中每個數字的字串。
我試圖加載它們,file = np.genfromtxt('tester.csv',delimiter=',', skip_header=1)但只加載了浮點數。文本都出現nan在陣列中。將 .csv 檔案加載到帶有一列浮點數和一列字串的二維陣列中的最佳方法是什么?
.csv 檔案的前幾行看起來像這樣
m/z Lipid ID
885.5 PI 18:0_20:4
857.5 PI 16:0_20:4
834.5 PS 18:0_22:6
810.5 PS 18:0_20:4
790.5 PE 18:0_22:6
uj5u.com熱心網友回復:
使用pandas加載您的CSV檔案,然后將其轉換為numpy使用陣列:
import numpy as np
import pandas as pd
df = pd.read_csv('tester.csv')
df_to_array = np.array(df)
您的 csv 將作為 numpy 陣列存盤在 df_to_array 中。
uj5u.com熱心網友回復:
使用時numpy,您可以安裝pandas以加載您的 csv 檔案:
# Python env: pip install pandas
# Anaconda env: conda install pandas
df = pd.read_csv('tester.csv', sep='\s\s ', engine='python')
uj5u.com熱心網友回復:
為了避免genfromtxtnans ,您需要告訴列的 dtypes,因為默認情況下,它會嘗試使所有內容都為浮點數。
此外,genfromtxt如果列有不同的 dtypes ,則會奇怪地生成陣列。為了解決這個問題,您可以添加unpack=Trueto genfromtxt,將其包裝在另一個陣列中,然后轉置:
dtypes = ['float', 'object']
csv = np.array(np.genfromtxt('tester.csv',delimiter=',', skip_header=1, dtype=dtypes, unpack=True)).T
輸出:
>>> csv
array([[885.5, b'PI 18:0_20:4'],
[857.5, b'PI 16:0_20:4'],
[834.5, b'PS 18:0_22:6'],
[810.5, b'PS 18:0_20:4'],
[790.5, b'PE 18:0_22:6']], dtype=object)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/390541.html
下一篇:Numba沒有提高性能
