我正在尝试沿着一个屏蔽广播的行,只有特定的值被广播。如何用另一个数组的值替换一部分numpy数组的值?
假设我有一个更大的阵列,bigger_array,和一个较小的阵列,smaller_array:
import numpy as np
import numpy.ma as ma
bigger_array = np.zeros((4,4), dtype=np.int32)
smaller_array = np.ones((2,2), dtype=np.int32)
现在,我只希望较小阵列的前三个值,以取代那些更大的某部分的数组,但掩蔽没有做什么,我所愿做:
masked_smaller_array = ma.masked_array(smaller_array, mask=[(0, 0), (0, 1)])
bigger_array[2:4, 2:4] = masked_smaller_array
这只是返回一个常规的广播会同样的事情,即:
[[0 0 0 0]
[0 0 0 0]
[0 0 1 1]
[0 0 1 1]]
通过
bigger_array[2:4, 2:4] = masked_smaller_array[~masked_smaller_array.mask]
覆盖前
相反我希望
[[0 0 0 0]
[0 0 0 0]
[0 0 1 1]
[0 0 1 0]]
剔除的屏蔽值是没有用的也为拉平阵列制作广播不兼容。
有没有其他方法可以达到相同的效果?
bigger_array[2:4, 2:4] = masked_smaller_array[~masked_smaller_array.mask]
你只是需要指数等式的左边使用相同的面膜敷在有作为 -