如何在ndarray中查找列

时间:2016-07-27 00:19:59

标签: python-3.x

说我有一个数组

x = array([[ 0,  1,  2, 5],
        [ 3,  4,  5, 5],
        [ 6,  7,  8, 5],
        [ 9, 10, 11, 5]])

我需要找到[3, 4, 5, 5]的位置/索引。在这种情况下,它应该返回1

1 个答案:

答案 0 :(得分:0)

创建一个数组y,其所有行都等于您要查找的行。然后,进行元素比较x == y并找到所有True的行。

import numpy as np

x1 = np.array([[0, 1, 2, 5], [3, 4, 5, 5],
               [6, 7, 8, 5], [9, 10, 11, 5]])
y1 = np.array([[3, 4, 5, 5]] * 4)
print(np.where(np.all(x1 == y1, axis=1))[0]) # => [1]

此方法返回索引数组,其中显示所需的行。

y2 = np.array([[1, 1, 1, 1]] * 4)
print(np.where(np.all(x1 == y2, axis=1))[0]) # => []

x2 = np.array([[3, 4, 5, 5], [3, 4, 5, 5],
              [6, 7, 8, 5], [9, 10, 11, 5]])
print(np.where(np.all(x2 == y1, axis=1))[0]) # => [0 1]