Python 从numpy数组中,获取值列表的索引

Python 从numpy数组中,获取值列表的索引,python,numpy,numpy-ndarray,Python,Numpy,Numpy Ndarray,像这样: >> arr = np.array([[0, 50], [100, 150], [200, 250]]) >>> values = [100, 200, 300] >>> arr in values 期望: array([[False, False], [ True, False], [ True, False]]) 结果: ValueError: The truth value of an arr

像这样:

>> arr = np.array([[0, 50], [100, 150], [200, 250]]) 
>>> values = [100, 200, 300] 

>>> arr in values
期望:

array([[False, False],
       [ True, False],
       [ True, False]])

结果:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我编写了以下代码,它可以工作,但此代码不能接受更改列表长度

(arr==values[0]) | (arr==values[1]) | (arr==values[2])

还可以将该变量的名称从values更改为与values不同的名称,例如

if valuess in arr.values :
print(valuess)

使用lambda函数

假设您有一个数组:

nums = [0,1,5]
Check whether 5 is in nums:

(len(filter (lambda x : x == 5, nums)) > 0)
使用np.isin:

import numpy as np

arr = np.array([[0, 50], [100, 150], [200, 250]])
values = [100, 200, 300]

np.isin(arr, values)
结果:

array([[False, False],
       [ True, False],
       [ True, False]])

这应该有效,但仅适用于2级深度:

import numpy as np


def is_in(arr, values):
    agg = []
    for a in arr:
        if isinstance(a, list):
            result = is_in(a, values)
            agg.append(result)
        else:
            result = np.isin(arr, values)
            return result
    return agg

arr = np.array([[0, 50], [100, 150], [200, 250]])
values = [100, 200, 300]

print(is_in(arr, values))

您使用的是脚本或命令行?@bogdoicin为什么会产生差异,您可以使用
np.isin(arr,values)
@bogdoicin此示例是以命令行的形式编写的,以简化,但我希望此代码在脚本上使用。在这个问题上有什么不同吗?@谢谢。你能写下这个作为答案吗?为什么要更改变量名?还有,这是如何回答这个问题的。。