2017-07-19 17 views
0

我是Python新手。 我想將CSV文件轉換爲二維數組,以便能夠進一步分析數據集。Python genfromtext使用CSV文件生成二維數組

這裏是我的數據集:

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生成我一個二維數組,這樣np.shape()可能會導致16,5。

+2

你的輸出**是**形狀'(16,5)'的2D,還是我在這裏丟失了一些東西? – Shai

回答

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. ]]) 
+0

非常感謝。你是完全正確的! – ZMK