Python genfromtext使用CSV文件生成2D数组

时间:2017-07-19 10:59:44

标签: python arrays python-3.x csv numpy

我是Python新手。 我正在尝试将CS​​V文件转换为2D数组,以便能够进一步分析数据集。

这是我的数据集:

1;1;356;3.3;3.9
1;2;403;3.9;4.0
1;3;370;5.0;2.6
1;4;386;6.9;2.1
2;1;511;4.1;2.5
2;2;488;3.5;2.0
2;3;568;4.6;2.1
2;4;562;5.2;1.8
2;5;478;5.4;2.1
3;1;415;6.5;2.1
3;2;418;5.9;1.8
3;3;388;8.3;3.0

我正在使用

np.genfromtxt(fname, delimiter=';')

但输出是

[[   1.     1.   356.     3.3    3.9]
 [   1.     2.   403.     3.9    4. ]
 [   1.     3.   370.     5.     2.6]...

如何使用genfromtxt生成2D数组,以便np.shape()可以生成16,5。

1 个答案:

答案 0 :(得分:2)

您的代码的结果是2D数组,正如您所期望的那样。您似乎正在打印结果,这就是为{2}数组设计__string__方法以删除分隔符的方式。相反,您只需在终端中键入数组名称,即可调用__repr__方法。它将为您提供更真实的阵列表示。

In [23]: arr = np.genfromtxt('a.txt', delimiter=';')

In [24]: arr.shape
Out[24]: (12, 5)

In [25]: print(arr)
[[   1.     1.   356.     3.3    3.9]
 [   1.     2.   403.     3.9    4. ]
 [   1.     3.   370.     5.     2.6]
 [   1.     4.   386.     6.9    2.1]
 [   2.     1.   511.     4.1    2.5]
 [   2.     2.   488.     3.5    2. ]
 [   2.     3.   568.     4.6    2.1]
 [   2.     4.   562.     5.2    1.8]
 [   2.     5.   478.     5.4    2.1]
 [   3.     1.   415.     6.5    2.1]
 [   3.     2.   418.     5.9    1.8]
 [   3.     3.   388.     8.3    3. ]]

In [26]: arr
Out[26]: 
array([[   1. ,    1. ,  356. ,    3.3,    3.9],
       [   1. ,    2. ,  403. ,    3.9,    4. ],
       [   1. ,    3. ,  370. ,    5. ,    2.6],
       [   1. ,    4. ,  386. ,    6.9,    2.1],
       [   2. ,    1. ,  511. ,    4.1,    2.5],
       [   2. ,    2. ,  488. ,    3.5,    2. ],
       [   2. ,    3. ,  568. ,    4.6,    2.1],
       [   2. ,    4. ,  562. ,    5.2,    1.8],
       [   2. ,    5. ,  478. ,    5.4,    2.1],
       [   3. ,    1. ,  415. ,    6.5,    2.1],
       [   3. ,    2. ,  418. ,    5.9,    1.8],
       [   3. ,    3. ,  388. ,    8.3,    3. ]])