我有一个带有标题的csv
文件,例如:
假设有这个test.csv
文件:
"A","B","C","D","E","F","timestamp"
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12
我只想将它作为一个有3行7列的矩阵/ndarray加载,并且我还想从给定的列名访问列向量。如果我使用 genfromtxt(如下所示),我会得到一个有3行(每行一个)但没有列的 ndarray。r = np.genfromtxt('test.csv',delimiter=',',dtype=None, names=True)
print r
print r.shape
[ (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291111964948.0)
(611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291113113366.0)
(611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291120650486.0)]
(3,)
我可以通过列名获取列向量,像这样:
print r['A']
[ 611.88243 611.88243 611.88243]
如果我使用load.txt
,那么我会得到一个有3行7列的数组,但是无法通过使用列名(如下所示)来访问columns
。
numpy.loadtxt(open("test.csv","rb"),delimiter=",",skiprows=1)
我理解
[ [611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12]
[611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12]
[611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12] ]
在Python
中,有没有一种方法可以同时实现这两个要求(像np.genfromtext
一样按列名称访问列,并像np.loadtxt
一样拥有矩阵)?
loadtxt
和genfromtext
同时加载csv
文件并访问numpy数组和列名,但是这需要太多时间。看起来这个解决方案也类似,只是用csv.reader替换了genfromtext(代码行更多)。我的csv文件大小为5MB,所以我希望有一个库可以同时完成两者。 - user2481422