numpy数组中每一行的选择列的平均值
问题描述:
我有一个叫做values
的numpy数据矩阵,它由9000列乘49列组成。 我想计算每行的前14列的平均值,并将其输出为具有相同行数的数组(即9000,与len(values)
相同)。numpy数组中每一行的选择列的平均值
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")
我的代码只计算正确的第一行的平均值,从那里的值是不正确的。我找不到什么是错的,但是肯定有一些逻辑错误,我似乎找不到。谁能找到它?
谢谢
答
您的原始函数的问题在于,您没有在迭代之间重置累加器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)
答
我用下面的替代方案,它给了我所有正确的数字,但我还是不明白,为什么在我的问题的更古老的解决办法只有第一行工作。
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")
谢谢Jaime!我可以问:“!”中惊叹号的含义是什么?!4'? – oaklander114 2014-11-22 07:36:48
这意味着我不能输入:应该是'14',编辑过这个帖子。 – Jaime 2014-11-22 09:06:27