【发布时间】:2020-07-17 10:21:50
【问题描述】:
假设我们有一个矩阵 M
M=np.array([[1,2,3],
[1,2,3],
[1,2,3],
[1,2,3]
[1,2,3],
[1,2,3]])
行数与 np.array 掩码的长度相同:
mask = np.array([False,True,False,True,False,True])
还有一个叫做 threshold=2 的附加参数
我只想用掩码对 M 进行子集化,直到 2 个 True 值为止,对于所有剩余的值,我将设置为 false。 这意味着 M[mask] 应该只返回第二行和第四行而不是最后一行。有没有一种有效的方法可以通过 numpy 避免 for 循环来做到这一点?
【问题讨论】:
-
您有基于循环的工作解决方案吗?
-
我的意思是非常简单,只是在循环检查数组中的 True 时,当阈值为 0 时,您将掩码的其余部分设置为 False。
-
只需使用
mask链接布尔索引,然后切片。检查 numpy numpy.org/doc/stable/reference/arrays.indexing.html 中有关索引的文档
标签: python numpy numpy-ndarray