這裏是我的test_data.csv:蟒蛇 - numpy的:讀CSV與正確的值類型numpy的
A,1,2,3,4,5
B,6,7,8,9,10
C,11,12,13,14,15
A,16,17,18,19,20
,我使用下面的代碼讀給一個numpy的數組:
def readCSVToNumpyArray(dataset):
with open(dataset) as f:
values = [i for i in csv.reader(f)]
data = numpy.array(values)
return data
在主代碼,我有:
numpyArray = readCSVToNumpyArray('test_data.csv')
print(numpyArray)
這使我的輸出:
(array([['A', '1', '2', '3', '4', '5'],
['B', '6', '7', '8', '9', '10'],
['C', '11', '12', '13', '14', '15'],
['A', '16', '17', '18', '19', '20']],
dtype='|S2'))
但是,所有的數字數組中被視爲string
,有沒有讓他們存儲爲float
不通過每個元素去並指定類型的好辦法?
謝謝!
'numpy.ndarrays'是同質的。這是他們改進性能的原因之一。也許你可以有兩個單獨的數組,一個用於數字,另一個用於字符串?或者是一個字符串和數組數組的列表?否則,您需要查看[numpy records](http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.core.records.fromfile.html)或其他一些數據結構。你有沒有考慮過熊貓數據框? –
看一看[pandas](http://pandas.pydata.org/pandas-docs/stable/io.html#io-read-csv-table),它非常適合加載csv。你可以通過'asarray(table)'方便地將pandas表('DataFrame'實際)轉換爲numpy數組。 –
如果你不想涉及一個額外的包(熊貓),請注意,'np.fromfile'或'np.genfromtxt'也是閱讀文本文件的好工具,在你的情況下你必須定義一個數據類型並且通過它對這些功能。去看看他們的文檔字符串,並看看'np.dtype'。 –