我有一个numpy数组:
247 656 6363
13822 13818 30054
10174 25484 6553
6107 2927 6578
2904 6462 3941
16562 8692 16563
25182 6681 25181
6679 6429 3841
我想标记这个数组中的所有行,其中3列中的任何一列包含第二个数组的数字:
13822
13818
2927
8692
3841
这可能吗?
我希望结果提供一个列表或数组中的所有行的数组1包含这些值之一。
我已经四处寻找,并尝试使用numpy.mask
,但无济于事。理想情况下,我希望返回包含第二个数组值的行的所有行号,以便稍后可以删除这些行。
2条答案
按热度按时间ymzxtsji1#
我首先偷了@hpaulj的例子,所以这是值得称赞的。然后使用
isin
。我决定把这个计时出来,结果差别是天文数字:
这给了我:
0md85ypi2#
第一,使用3D比较阵列。
一对样品阵列:
使用numpy广播比较2,结果是3d:
现在检查所需的True组合。对于
first
的所有行,至少有一个True:测试最后一行
first
和second
(轴2):和行索引:
编辑
对于我的小例子,使用
isin
:以及按列测试迭代:
但与大多数计时一样,它们可以通过大型示例进行不同的缩放。