python - 用于屏蔽数组的 Numpy broadcast_to

标签 python numpy masked-array

我正在使用 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/

相关文章:

python - 将 pandas DataFrame 中的日期时间值与特定的 data_time 值进行比较并返回最接近的值

python - 在网页抓取时,当尝试计算页面上的项目数量时,即使有超过 1 个项目,我也会得到 1

python - 查找第一个范围包含数字(Numpy、Pandas)

python - Numpy astype "upcasting"数组而不是跨列应用数据类型

python - 在 numpy 中矢量化后的性能损失

python - 使用 numpy masked array 和 imshow 绘制分割的彩色图像

python - Django 如何验证用户是否已经存在

python - 如果该值在另一个列表中被屏蔽,则从列表中删除元素

python - Numpy masked_array 总和

python - 如何在共享内存中轻松存储python可用的只读数据结构