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) 
+0

谢谢Jaime!我可以问:“!”中惊叹号的含义是什么?!4'? – oaklander114 2014-11-22 07:36:48

+0

这意味着我不能输入:应该是'14',编辑过这个帖子。 – Jaime 2014-11-22 09:06:27

我用下面的替代方案,它给了我所有正确的数字,但我还是不明白,为什么在我的问题的更古老的解决办法只有第一行工作。

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")