numpy数组中每行的选定列的平均值

2024-10-01 00:14:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个称为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")

我的代码只正确计算第一行的平均值,从那里开始的值就不正确了。我找不到哪里出了问题,但一定有一些我似乎找不到的逻辑错误。。有人能找到吗?在

谢谢你


Tags: 数据inimportnumpyforlenrange矩阵
2条回答

原始函数的问题是没有在迭代之间重置累加器a。重复使用语法可以做到:

for i in range(len(values)):
    a = int()
    for x in range(0, 14):
        a += values[i, x]

或者由于Python不是强类型语言,请使用更清晰的:

^{pr2}$

不管怎样,你所追求的是一个简单而高效的句子:

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

相关问题 更多 >