我想在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)
求平均值最简单的方法是什么?
获取每个子矩阵,并取平均值。将结果存储在单独的矩阵中(否则之前计算的平均值会扰乱下一个平均值的计算):
代码:
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. ]]