这里是我的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'。 –