2016-05-17 50 views
1

我有一個包含390行和8000列的.txt文件。數據由僅由1和0隔開的空格組成。我想計算每列中數字1出現的次數(每列的總和)。我爲此使用numpy數組。問題是我保持在腳本線得到以下錯誤消息「B = a.sum(軸= 0)」:Python 2.7,np.asarray,TypeError:無法使用靈活類型執行縮減

「類型錯誤:不能執行減少與彈性類型」

任何建議將是受歡迎!

這是簡單的代碼我使用:

import csv 
import numpy as np 
from numpy import genfromtxt 
my_data = genfromtxt('test1.txt', dtype='S', delimiter=',') 
a = np.asarray(my_data) 

import sys 
sys.stdout = open("test1.csv", "w") 

b = a.sum(axis=0) 
print b 

輸入例如,test1.txt的:

1 0 0 0 1 1 0 1 
0 1 1 0 1 1 1 1 
1 0 0 0 0 1 0 0 
0 1 1 0 1 0 1 1 

預期輸出:

2 2 2 0 3 3 2 3 
+0

的第一步是使用'genfromtxt'正確。你打印過「a」還是看它的屬性?或看看'my_data'? – hpaulj

回答

1

你得到這個錯誤,因爲你正在用dtype ='S'導入數據,這是一個字符串。您必須使用正確的dtype導入數據,例如int

你不需要導入csv,你不需要使用np.asarray。只需用np.genfromtxtdelimiter=' 'dtype=int打開文件。

嘗試:

import numpy as np 

my_data = np.genfromtxt('test1.txt', dtype=int, delimiter=' ') 
b = my_data.sum(axis=0) 
+0

非常棒!非常感謝@Francesco Nazzaro! – Lucas

相關問題