我正在使用 np.broadcast_to
函数来获取 reshape 数组的 View ,就像示例一样:
>>> x = np.array([1, 2, 3])
>>> np.broadcast_to(x, (3, 3))
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
尽管将掩码数组传递给此函数,但我失去了掩码:
>>> y = np.ma.array([1, 2, 3], mask=[False, True, False])
>>> np.broadcast_to(y, (3, 3))
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
如何获取下面的 View ?
array([[1, --, 3],
[1, --, 3],
[1, --, 3]])
最佳答案
显然,您可以将 subok
参数传递给 np.broadcast_to
以保留传递的数组类型而不使用基本数组类型,但这只会广播掩码数组的数据,而不是掩码。
之后您可能应该手动广播掩码:
>>> y = np.ma.array([1, 2, 3], mask=[False, True, False])
>>> z = np.broadcast_to(y, (3, 3), subok=True)
>>> z.mask
False
>>> z.mask = np.broadcast_to(y.mask, z.shape)
>>> z
masked_array(data =
[[1 -- 3]
[1 -- 3]
[1 -- 3]],
mask =
[[False True False]
[False True False]
[False True False]],
fill_value = 999999)
关于python - 用于屏蔽数组的 Numpy broadcast_to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47453085/