【发布时间】:2019-02-27 05:50:08
【问题描述】:
我有一个 ndarray。我需要屏蔽任何小于 50 的数字,直到遇到的第一个数字大于 50。这应该在一行的开头和结尾都完成。对,当遇到的第一个数字大于 50 时,屏蔽应该停止。
一行看起来像:
[ 0 1 1 0 57 121 120 157 77 14 0 3 0 0 0 0 67 100
98 97 101 129 139 105 97 105 181 126 10 0 0]
我想要类似的东西:
[-- -- -- -- 57 121 120 157 77 14 0 3 0 0 0 0 67 100 98 97
101 129 139 105 97 97 105 181 126 -- -- --]
屏蔽应该在第二行的 57 之前停止,在最后一行的 126 处停止。
我尝试过 ma.masked_where,但它也掩盖了两者之间的 0,这是我不想要的。
所以,如果有办法做到这一点,或者你能帮助我,以便我可以指定一个索引范围,例如:[0:40] 只应该被屏蔽。
我不想在屏蔽后更改数组的维度。此外,-- 的存在不会影响我的目的。
【问题讨论】:
-
屏蔽应该达到什么效果?我没有看到预期的输出。
-
已进行更改。
-
第 29 和第 30 位的两个
ones呢? -
@a_ran 只需提及阈值 (50),不要将自己和他人与提及的零混淆。
-
@jpp 的布尔索引解决方案(稍作调整)将选择应该与排除末端相同的中间。
标签: python arrays numpy masking masked-array