Python:二维数组中的平均值

问题描述 投票:0回答:1

我想在Python中生成一个二维数组,我想迭代每个元素并取平均值。元素 i 应使用周围 8 个数组元素(包括元素 i)进行平均。

我使用 在 python 中围绕矩阵形成零框架生成了带有零框架的二维数组。

A = np.array([[1,2,3],[4,5,6],[7,8,9]])
x,y = A.shape
n = 1    
B = np.zeros((x+2*n,y+2*n),dtype=int)
B[n:x+n, n:y+n] = A
print(B)

求平均值最简单的方法是什么?

python multidimensional-array average
1个回答
0
投票

获取每个子矩阵,并取平均值。将结果存储在单独的矩阵中(否则之前计算的平均值会扰乱下一个平均值的计算):

代码:

import numpy as np

A = np.array([[1,2,3],[4,5,6],[7,8,9]])
x,y = A.shape
n = 1    
B = np.zeros((x+2*n,y+2*n),dtype=float)
B[n:x+n, n:y+n] = A

C = B.copy() # not doing it in place because the math would get messed up
for i in range(x):
    for j in range(y):
        sub_b = B[i:i+x, j:j+y]
        average = np.sum(sub_b) / 9
        C[i + n, j + n] = average
        
print(C)

输出:

[[0.         0.         0.         0.         0.        ]
 [0.         1.33333333 2.33333333 1.77777778 0.        ]
 [0.         3.         5.         3.66666667 0.        ]
 [0.         2.66666667 4.33333333 3.11111111 0.        ]
 [0.         0.         0.         0.         0.        ]]
© www.soinside.com 2019 - 2024. All rights reserved.