我有一个包含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
答案 0 :(得分:1)
您收到该错误是因为您要使用dtype =' S'导入数据。那是一个字符串。您必须使用适当的dtype
导入数据,例如int
。
您不需要导入csv
,也不需要使用np.asarray
。只需使用np.genfromtxt
和delimiter=' '
以及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