我有一个csv文件已准备好加载到我的python代码中,但是,我想将其加载到以下格式:
data = [[A,B,C,D],
[A,B,C,D],
[A,B,C,D],
]
如何加载可读作为numpy数组的.csv文件?例如,简单地使用以前的教程会严重影响使用:
data = np.array(data)
如果不这样做,我只想上传我的csv文件(例如'dual-Cored.csv'作为data = dual-Cored.csv)
答案 0 :(得分:9)
最简单的解决方案就是:
import numpy as np
data = np.loadtxt("myfile.csv")
只要数据可以转换为float
并且每行的列数相同,就可以了。
如果某些列中的数据无法转换为float
,您可以为其编写自己的转换器。请参阅numpy.loadtxt
文档。它非常灵活。
答案 1 :(得分:2)
如果你的CVS是这样的:
A,B,C,D
A,B,C,D
A,B,C,D
A,B,C,D
然后
import csv
with open(filename, 'rb') as f:
data = list(csv.reader(f))
会使data
等于
[['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D']]
答案 2 :(得分:1)
作为一个小例子,我有一些文件data.csv
,其中包含以下内容。
A,B,C,d
1,2,3,4
W,X,Y,Z
5,6,7,8
with open('data.csv', 'r') as f:
data = [i.split(",") for i in f.read().split()]
print data
输出
[['A', 'B', 'C', 'D'],
['1', '2', '3', '4'],
['W', 'X', 'Y', 'Z'],
['5', '6', '7', '8']]
答案 3 :(得分:1)
我假设您的意思是将所有数据点作为整数或浮点数。
首先我写了一些示例数据:
with open('dual-Cored.csv', 'w') as f:
f.write('1,2,3,4\n5,6,7,8\n9,10,11,12')
现在我正在读回样本数据
with open('dual-Cored.csv', 'rU') as f:
c = csv.reader(f)
for l in c:
print list(map(int, l))
打印哪些:
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]
上阅读一下
使用csv模块读入numpy数组:
import numpy
with open('dual-Cored.csv', 'rU') as f:
c = csv.reader(f)
ar = numpy.array(list(c), dtype=int)
和ar
现在返回:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
或直接使用numpy.genfromtxt
函数(您需要指定分隔符):
numpy.genfromtxt('dual-Cored.csv', delimiter=',')
返回:
array([[ 1., 2., 3., 4.],
[ 5., 6., 7., 8.],
[ 9., 10., 11., 12.]])