我正在嘗試沿着一個屏蔽廣播的行,只有特定的值被廣播。如何用另一個數組的值替換一部分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]
你只是需要指數等式的左邊使用相同的面膜敷在有作爲 -