Python 2.7,np.asarray,TypeError:无法使用灵活类型

时间:2016-05-17 15:37:00

标签: numpy multidimensional-array

我有一个包含390行和大约8000列的.txt文件。数据仅由1和0组成,由空格分隔。我想计算所有列中每列中出现的数字1的次数(每列的总和)。我正在使用numpy数组。问题是我在脚本行“b = a.sum(axis = 0)”中不断收到以下错误消息:

“TypeError:无法使用灵活类型执行reduce”

欢迎任何建议!

这是我正在使用的简单代码:

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

1 个答案:

答案 0 :(得分: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) 文件。

尝试:

ROW_NUMBER() OVER (PARTITION BY YourOrderID ORDER BY YourOrderID) as RowNumber