获取两个条件(在不同数组上)为tru的数组的索引

2024-05-29 03:35:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个numpy数组:ab。我想选择a == 1b == 0的所有索引。

也就是说,如果我有以下数组:

a = [0, 1, 3, 5, 1, 1, 2]

b = [1, 0, 2, 5, 3, 0, 6]

我想找回以下指数:

[1, 5]

在纽比我该怎么做?我尝试使用了以下方法(由一个快速参考指南建议,该指南显示了numpy、matlab和IDL之间的差异):

(a == 1 and b == 0).nonzero()

但这就给了真理价值观模棱两可的错误。

有什么想法吗?


Tags: and方法numpy错误指南数组差异指数
3条回答

有一种方法:

In [75]: import numpy as np

In [76]: a = np.array([0, 1, 3, 5, 1, 1, 2])

In [77]: b = np.array([1, 0, 2, 5, 3, 0, 6])

In [78]: np.argwhere((a==1) & (b==0)).flatten()
Out[78]: array([1, 5])

尝试使用以下代码:

import numpy

a = numpy.array([0, 1, 3, 5, 1, 1, 2])
b = numpy.array([1, 0, 2, 5, 3, 0, 6])

res =  [i for i,v in enumerate(zip(a,b)) if v == (1,0)]

print res
In []: a= array([0, 1, 3, 5, 1, 1, 2])
In []: b= array([1, 0, 2, 5, 3, 0, 6])
In []: logical_and(a== 1, b== 0).nonzero()[0]
Out[]: array([1, 5])

显然这也会起作用:

In []: ((a== 1)& (b== 0)).nonzero()[0]
Out[]: array([1, 5])

相关问题 更多 >

    热门问题