【问题标题】:How to check if an array is in another array in Python如何检查一个数组是否在Python中的另一个数组中
【发布时间】:2018-06-10 10:24:53
【问题描述】:

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

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。

【问题讨论】:

  • 旁注:您可以通过three = np.arange(3.0); np.array([np.repeat(three, 3), np.tile(three, 3)]).T 更有效地构建a
  • This 是一个相关问题。

标签: python python-3.x numpy


【解决方案1】:

你可以这样做:

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

第一步是计算一个二维布尔数组,其中包含匹配项。然后你会找到所有元素都为真的行。然后检查是否有任何行完全匹配。

【讨论】:

    【解决方案2】:

    这段代码可以帮助你:

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

    【讨论】:

      【解决方案3】:

      你可以使用 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)
      

      输出:

      [假假真真]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-28
        • 1970-01-01
        • 2016-12-13
        • 2017-05-30
        • 1970-01-01
        相关资源
        最近更新 更多