我试图获取一堆有效的二进制数据行,0和1的行,然后求它们。它是使用numpy.loadtxt从文本加载的大约一百万条记录的数组。
import numpy as np
data = np.loadtxt('test.txt')
sdata = np.asfarray(np.sum(data,axis=1))
问题是我得到了无意义的结果,我得到了一个有效的阵列,其数量相当于行号或其他东西。我可以打印出一个数组,例如前三行是[0,0,0,0,0,0,0,0,0,0]。但前三个"总和"在sdata数组中读取0.0000000e + 00,1.00000000e + 01,2.00000e + 01。这显然不是我正在寻找的总和。
如果我使用axis = 0,我会得到我想要的列数,所以我不知道该如何处理...任何建议都是超级的。谢谢!
我使用usecols = range(1,n),其中我已经检查过(并使用过)以前的行长度。这是所请求的文本文件样本。
0 0 0 0 0 0 0 0 0 0 0
10 0 0 0 0 0 0 0 0 0 0
20 0 0 0 0 0 0 0 0 0 0
30 0 0 0 0 0 0 0 0 0 0
40 0 0 0 0 0 0 0 0 0 0
50 0 0 0 0 0 0 0 0 0 0
60 0 0 0 0 0 0 0 0 0 0
70 0 0 0 0 0 0 0 0 0 0
80 0 0 0 0 0 0 0 0 0 0
90 0 0 0 0 0 0 0 0 0 0
100 0 0 0 0 0 0 0 0 0 0
110 0 0 0 0 0 0 0 0 0 0
120 1 1 1 1 0 0 0 0 0 0
130 0 1 1 1 1 0 0 0 0 0
140 0 1 1 1 1 0 0 0 0 0
150 0 1 1 1 1 0 0 0 0 0
160 0 1 1 1 1 0 0 0 0 0
170 0 1 1 1 1 0 0 0 0 0
180 0 1 1 1 1 0 0 0 0 0
190 0 0 1 1 1 1 1 1 1 1
对我而言,它看起来很可疑,因为它使用第一列来制作总和,但是如果我打印出数据[0],例如它打印出我的十个0而没有别的,如果我打印数据[1]它给了我另外十个0,没有第一列。正如预期的那样。
答案 0 :(得分:0)
你的代码对我来说很好......
import numpy as np
data = np.loadtxt('c:/temptemp/test.txt', usecols=range(1,11))
sdata = np.asfarray(np.sum(data,axis=1))
print(data)
print(sdata)
返回
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 4. 4. 4. 4. 4. 4. 4. 8.]
答案 1 :(得分:0)
因此,经过多次捣乱后,我认为这是一个奇怪的错误或类似的东西,可能是numpy。
这整个代码类似于其他位,都在函数内部定义,使数据变量本地化。如果我使用load函数和此函数中的所有其他位使用其他数组名而不是数据变量名,那么它会产生预期的结果。我已经仔细检查了,并且没有全局覆盖它,所以不确定它为什么会发生。必须是一个边缘案件。
如果我将一个函数分解为一个完全独立的文件并单独运行该代码,它也可以工作。
所以简而言之,其他任何有这个或类似奇怪问题的人,尝试使用你根本没用过的另一个数组变量名,它可能会消失。
谢谢大家。