我是Python新手。 我正在尝试将CSV文件转换为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。
答案 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. ]])