Python 对单个行使用np.count\u nonzero()的Numpy掩码

Python 对单个行使用np.count\u nonzero()的Numpy掩码,python,numpy,Python,Numpy,有没有一种方法可以在不使用for循环的情况下为numpy数组中的各个行创建numpy掩码 示例:如果行的非零值超过零,则应用真掩码 给定输入:array=[[0,0],[0,1],[0,2],[0,0]] 预期输出:mask=[False,True,True,False] 编辑: 我的目标是了解是否有更快的上述代码实现,这允许我对非零元素的数量使用多个不同的值。这可以由numpy自己实现。但你得想一想 首先,你需要写下你的情况,观察你会得到什么。例如: >>> print(ar

有没有一种方法可以在不使用for循环的情况下为numpy数组中的各个行创建numpy掩码

示例:如果行的非零值超过零,则应用真掩码

给定输入:
array=[[0,0],[0,1],[0,2],[0,0]]

预期输出:
mask=[False,True,True,False]

编辑:


我的目标是了解是否有更快的上述代码实现,这允许我对非零元素的数量使用多个不同的值。

这可以由numpy自己实现。但你得想一想

首先,你需要写下你的情况,观察你会得到什么。例如:

>>> print(array>0)
[[False False]
 [False  True]
 [False  True]
 [False False]]
>>> print((array>0).any(axis=1))
[False  True  True False]
然后,您应该找到一种方法来聚合您的结果。对于此任务,聚合方法any是最佳方法。它与内置的any一样有效,但您可以明确指定要聚合的轴。例如:

>>> print(array>0)
[[False False]
 [False  True]
 [False  True]
 [False False]]
>>> print((array>0).any(axis=1))
[False  True  True False]


因此,您的问题的答案是:
mask=(array>0)。任何(axis=1)

这都可以由numpy自己完成。但你得想一想

首先,你需要写下你的情况,观察你会得到什么。例如:

>>> print(array>0)
[[False False]
 [False  True]
 [False  True]
 [False False]]
>>> print((array>0).any(axis=1))
[False  True  True False]
然后,您应该找到一种方法来聚合您的结果。对于此任务,聚合方法any是最佳方法。它与内置的any一样有效,但您可以明确指定要聚合的轴。例如:

>>> print(array>0)
[[False False]
 [False  True]
 [False  True]
 [False False]]
>>> print((array>0).any(axis=1))
[False  True  True False]

所以你的问题的答案是:
mask=(数组>0)。any(axis=1)