Python:在多行和固定列上取平均值
我使用Numpy创建了二维阵列: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][
>>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