将较小的数组放在大数组中,同时忽略零

时间:2015-01-26 22:25:09

标签: python numpy

我有一个大型数组,想要在一些偏移处放置一个较小的数组,同时忽略较小数组中的零。什么是最好的方法呢?

我尝试了蒙面数组,但不知怎的,这很慢

mask = np.ma.masked_equal(pixels, 0, False)
output[offset_y:offset_y+tile_height,offset_x:offset_x+tile_width] = np.where(mask.mask, output[offset_y:offset_y+tile_height,offset_x:offset_x+tile_width], pixels)

然后我试了这个

np.place(output[offset_y:offset_y+tile_height,offset_x:offset_x+tile_width], pixels>0, pixels[pixels>0])

但是很慢

最快的方法是什么?

1 个答案:

答案 0 :(得分:2)

我怀疑常规的旧逻辑索引在这里效率最高:

# make a view into output with the same dimensions as `pixels`
output_subarray = output[offset_y:offset_y+tile_height,offset_x:offset_x+tile_width]

mask = pixels != 0
output_subarray[mask] = pixels[mask]