Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:在多行和固定列上取平均值_Python_Arrays_Numpy - Fatal编程技术网

Python:在多行和固定列上取平均值

Python:在多行和固定列上取平均值,python,arrays,numpy,Python,Arrays,Numpy,我使用Numpy创建了二维阵列: >>d=np.random.randint(0, 100, (4,5)) d=array([[19, 7, 22, 73, 84], [ 1, 78, 49, 99, 25], [43, 97, 17, 83, 1], [98, 1, 81, 4, 82]]) 让我们假设每一行对应一个特定的时间,而每一列对应一个特定的频率。我需要平均每列两行,并将其存储在新数组y[2][

我使用Numpy创建了二维阵列:

>>d=np.random.randint(0, 100, (4,5))
  d=array([[19,  7, 22, 73, 84],
           [ 1, 78, 49, 99, 25],
           [43, 97, 17, 83,  1],
           [98,  1, 81,  4, 82]])
让我们假设每一行对应一个特定的时间,而每一列对应一个特定的频率。我需要平均每列两行,并将其存储在新数组y[2][5]中。例如y[0][0]=平均值(19,1),y[1][0]=平均值(43,98),y[0][1]=平均值(7,78),等等

我正在尝试这样的平均值:

for i in range(0,len(d)/2):
    for j in range(0, 5):
        r1=2*i
        r2=2*(i+1)
        y[i][j]=np.mean(d[r1:r2][j])
然而,它表明:

y[i][j]=np.mean(d[r1:r2][j])
IndexError: index 4 is out of bounds for axis 0 with size 4

有没有正确使用np.mean的建议?

您可以将数组分为两个2x5数组,然后在两个数组的每列中取平均值,然后使用
vstack
将它们重新组合在一起:

>>> np.vstack((d[:2].mean(axis=0), d[2:].mean(axis=0)))
array([[ 10. ,  42.5,  35.5,  86. ,  54.5],
       [ 70.5,  49. ,  49. ,  43.5,  41.5]])

出现错误的原因是您正在使用
d[r1:r2][j]
创建一个包含两行的
d
子数组,然后尝试访问该子数组中索引大于1的行(我认为您打算使用
j
访问列)

您需要将该代码替换为
d[r1:r2,j]
以使其正常工作,但我建议您在
循环中使用NumPy方法,而不是Python