如何在python中使用屏蔽数组作为索引?
例如,当我想使用numpy掩码数组作为索引时,遇到了一些问题:如何在python中使用屏蔽数组作为索引?,python,arrays,numpy,Python,Arrays,Numpy,例如,当我想使用numpy掩码数组作为索引时,遇到了一些问题: import numpy as np a=np.array([0,1,2,3,4,5]) b=np.array([[0,1],[3,5]]) >>> a[b] array([[0, 1], [3, 5]] 问题是b中的3号不是我想要的。我想得到的结果是 a[b]=array([[0, 1], [5]]) 所以我用了numpy.ma: b=np.ma.mask
import numpy as np
a=np.array([0,1,2,3,4,5])
b=np.array([[0,1],[3,5]])
>>> a[b]
array([[0, 1],
[3, 5]]
问题是b中的3号不是我想要的。我想得到的结果是
a[b]=array([[0, 1],
[5]])
所以我用了numpy.ma:
b=np.ma.masked_equal(b,3)
>>> b
masked_array(data =
[[0 1]
[-- 5]],
mask =
[[False False]
[ True False]],
fill_value = 3)
>>> a[b]
array([[0, 1],
[3, 5]])
正如我们所看到的,屏蔽值仍然可以作为索引使用,有没有办法修复它?在这种情况下,“忽略它”是什么意思?一般来说,屏蔽数组只能与屏蔽数组函数和方法一起使用。它们不是常规数组的替代品。但是,有了更多的信息,我们可以建议使用它的方法,或者类似的东西。感谢您提供的这个代码片段,它可能会提供一些有限的、即时的帮助。通过说明为什么这是一个很好的问题解决方案来正确解释它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。
>>> np.ma.masked_array(a[b.data], b.mask)
masked_array(data =
[[0 1]
[-- 5]],
mask =
[[False False]
[ True False]],
fill_value = 999999)