我有一个名为values
的numpy数据矩阵,有9000行,49列。
我想计算每行的前14列的平均值,并将其输出为具有相同行数的数组(即9000,与len(values)
相同)。
import numpy
av15=[]
a = int()
for i in range(len(values)):
for x in range(0,14):
a += values[i,x]
b = a/14
av15.append(b)
av15 = numpy.array(av15)
av15 = av15.reshape([len(values),1])
numpy.savetxt("av15.txt",av15, delimiter = "\t")
我的代码只计算第一行的正确平均值,从那里值不正确。我无法找到问题所在,但必定存在一些我无法找到的逻辑错误。有人能找到吗?
谢谢
答案 0 :(得分:1)
原始函数的问题在于您没有在迭代之间重置累加器a
。重用您的语法:
for i in range(len(values)):
a = int()
for x in range(0, 14):
a += values[i, x]
或者由于Python不是强类型语言,请使用更清晰的语言:
for i in range(len(values)):
a = 0
for x in range(0, 14):
a += values[i, x]
无论哪种方式,你所追求的正确的numpy结构就是这种简单而有效的单线:
av15 = np.mean(values[:, :14]).reshape(-1, 1)
答案 1 :(得分:0)
我使用下面的替代方案,它给了我所有正确的数字,但我仍然不明白为什么我的问题中更古老的解决方案只适用于第一行。
av15=[]
a = int()
for i in range(len(values)):
a = values[i,0:14].mean()
av15.append(a)
av15 = numpy.array(av15)
av15 = av15.reshape([len(values),1])
numpy.savetxt("av15.txt",av15, delimiter = "\t")