如何使用 Python 在数组的所有第三列中找到确切的值?

How I can find exact value in all of third column of array using Python?

如果我有这样一个 Numpy 数组:

array([0, 0, 0]
      [0, 0, 1]
      [0, 1, 2]
      [0, 1, 3]
      [1, 0, 4]
      [1, 0, 5]
      [1, 1, 6]
      [1, 1, 7])

我尝试使用

if c==1 in range(X[:,2]):
  print 'yes'

但出现错误

TypeError: only length-1 arrays can be converted to Python scalars

是否可以使用切片和 if 语句找到 c==1

您可以在此处使用布尔索引(而不是循环并使用 if)。在这里,您可以使用 True/False 值的数组来挑选您想要的行或列或数组的值。

在第三列中查找带有 1 的行需要使用的布尔数组是这样的:

>>> X[:, 2] == 1
array([False,  True, False, False, False, False, False, False], dtype=bool)

这 return 是一个新数组,每行 X 都有一个值。如果第三列的值为 1,则它包含 True,否则包含 False

(您可以看到,如果您循环遍历第三列的值以查找 1,就会得到这个结果。)

到return第X的第3列1的行,只需使用这个布尔数组索引X:

>>> X[X[:, 2] == 1]
array([[0, 0, 1]])

因为x[:,2]给你第三列的元素数组

>>> import numpy as np
>>> x = np.array([[0, 0, 0], [0, 0, 1], [0, 1, 2], [0, 1, 3], [1, 0, 4], [1, 0, 5], [1, 1, 6], [1, 1, 7]])
>>> x
array([[0, 0, 0],
       [0, 0, 1],
       [0, 1, 2],
       [0, 1, 3],
       [1, 0, 4],
       [1, 0, 5],
       [1, 1, 6],
       [1, 1, 7]])
>>> x[:,2]
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> if 1 in x[:,2]:
...     print("yes")
... 
yes

像这样效率最高

>>> if np.any(x[:, 2] == 1):
...     print("yes")
... 
yes
>>>