来自屏蔽数组的随机索引

mtr*_*ean 5 python numpy

我有一个 2D MaskedArray X,我想从中随机选择 30 个非屏蔽元素并返回它们的索引idx

目标是我可以在代码中使用索引来有效地读取/设置值:

selected = X[idx]
X[idx] = a # some arrays with the same length
Run Code Online (Sandbox Code Playgroud)

最有效的生成方式是什么idx

mtr*_*ean 2

好吧,我已经找到了一种方法...如果有人有更好的方法,请告诉我。

pos = np.random.choice(X.count(), size=30)
idx = tuple(np.take((~X.mask).nonzero(), pos, axis=1))
Run Code Online (Sandbox Code Playgroud)