【发布时间】:2016-11-09 00:09:03
【问题描述】:
我有一个 ndarray,我想用其相邻元素的平均值替换数组中的每个值。下面的代码可以完成这项工作,但是当我有 700 个形状为 (7000, 7000) 的数组时,它非常慢,所以我想知道是否有更好的方法来做到这一点。谢谢!
a = np.array(([1,2,3,4,5,6,7,8,9],[4,5,6,7,8,9,10,11,12],[3,4,5,6,7,8,9,10,11]))
row,col = a.shape
new_arr = np.ndarray(a.shape)
for x in xrange(row):
for y in xrange(col):
min_x = max(0, x-1)
min_y = max(0, y-1)
new_arr[x][y] = a[min_x:(x+2),min_y:(y+2)].mean()
print new_arr
【问题讨论】:
-
它对我来说一点也不慢,看起来也不应该慢。
-
@EliSadoff 如果我有 700 个数组,所有形状都为 (7000,7000) ...
-
我不确定如何在 python 中做到这一点,但您是否考虑过多线程或并行处理?我知道在 C 语言中你可以这样做来加速大数据处理。
-
你没有正确设置
max_x和max_y...
标签: python arrays numpy array-broadcasting