如何检查数组是否在Python的另一个数组中

时间:2018-06-10 10:24:54

标签: python python-3.x numpy

我认为in对此有好处,但它应该在不应该的地方返回。例如:

import numpy as np

a = np.array([])

for i in range(3):
    for j in range(3):
        a = np.append(a,[i,j])
a = np.reshape(a,(9,2))
print(a)

print([[0,40]] in a)

将打印为true。我无法理解为什么会这样做...是因为0在列表中?如果整个数组都在列表中,我想要只打印一些内容。

我想要我的清单

[[0,1],
[0,2]]

只有在[0,x](同一形状相同的顺序)中才会返回true。

3 个答案:

答案 0 :(得分:3)

你可以这样做:

([0, 40] == a).all(1).any()

第一步是计算匹配所在位置的2D布尔数组。然后,您会找到所有元素都为true的行。然后检查是否有任何行完全匹配。

答案 1 :(得分:1)

您可以使用np.isin(a_array,b_array),它返回一个布尔数组。 例如:

import numpy as np
a_array =np.array([1,2,3,4])
b_array = np.array([3,4,5])
bool_a_b = np.isin(a_array, b_array)
print(bool_a_b)

输出:

[False False True True True

答案 2 :(得分:0)

此代码可以帮助您:

my_list = [0, 40]
print(all(b in a for b in my_list))