gpt4 book ai didi

python - numpy:屏蔽数组的 ndenumerate?

转载 作者:太空狗 更新时间:2023-10-30 00:46:29 25 4
gpt4 key购买 nike

有没有办法枚举屏蔽 numpy ndarray 的非屏蔽位置? (例如,以 ndenumerate 对常规 ndarrays 执行此操作的方式,但省略了所有屏蔽条目)?

编辑:更准确地说:枚举不仅应该跳过屏蔽条目,还应该显示原始数组中非屏蔽条目的索引。例如。如果一维数组的前五个元素被屏蔽,而下一个元素的未屏蔽值为 3,则枚举应以类似 ((5,), 3), ... 的内容开头.

谢谢!

PS:请注意,尽管可以申请 ndenumerate到蒙面 ndarray ,生成的枚举不会区分其屏蔽条目和正常条目。事实上,ndenumerate不仅不会从枚举中过滤掉被屏蔽的条目,而且它甚至不会用 masked 替换枚举值。不变。因此,无法适应 ndenumerate对于这个任务,只需包装 ndenumerate使用合适的过滤器。

最佳答案

您只能访问使用掩码的反面作为索引的有效条目:

>>> import numpy as np
>>> import numpy.ma as ma
>>> x = np.array([11, 22, -1, 44])
>>> m_arr = ma.masked_array(x, mask=[0, 0, 1, 0])
>>> for index, i in np.ndenumerate(m_arr[~m_arr.mask]):
print index, i
(0,) 11
(1,) 22
(2,) 44

参见 this了解详情。

仅对具有原始数组索引的有效条目进行枚举:

>>> for (index, val), m in zip(np.ndenumerate(m_arr), m_arr.mask):
if not m:
print index, val
(0,) 11
(1,) 22
(3,) 44

关于python - numpy:屏蔽数组的 ndenumerate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8620798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com