这是我的功能,我知道循环很慢 在numpy
中必须有更快/更好的方法import numpy as np
def heat(u):
my_u = np.empty_like(u)
np.copyto(my_u, u)
for row in range(1,u.shape[0]-1):
for col in range(1,u.shape[1]-1):
my_u[row, col] = (u[row-1][col] + u[row+1][col]
+ u[row][col-1] + u[row][col+1])/4
return my_u
print(heat(np.array([[100, 100, 100, 100, 100],
[100, 0, 0, 0, 100],
[100, 0, 0, 0, 100],
[100, 0, 0, 0, 100],
[100, 100, 100, 100, 100]])))
答案 0 :(得分:0)
你确定你只想添加十字架的4个元素,而不是所有邻居吗?在SO上搜索' sum neighbors numpy '可以为你提供许多答案,无论你是如何掩盖它,都可以为你做任何交叉或完整的邻居。
如果你想要在速度方面稍微提高一点,那就放弃对阵列的双重查找,这会快30%左右。
my_u[row, col] = (u[row-1, col] + u[row+1, col]
+ u[row, col-1] + u[row, col+1])/4