选择包含不同大小的numpy.ndarrays的numpy.ndarray的特定行

时间:2018-11-03 12:21:25

标签: python numpy multidimensional-array indexing

我有一个numpy.ndarray,其中包含大小不同的numpy.ndarray's,我想提取一些行,其中每行的第一个数字在某个列表中。

示例:

>>>a
array([array([1]), array([2, 3]), array([3, 1, 1]), array([2, 3, 3, 4])], dtype=object)

>>> idx
[2]

我需要:

>>>a
array([array([2, 3]), array([2, 3, 3, 4])], dtype=object)

所以我只希望a的行(或数组)的第一个数字为2。有没有像本文here那样的简单而又不错的方法呢?

1 个答案:

答案 0 :(得分:2)

像这样的对象dtype数组比2d数组更像是列表列表。 a实际上有一个指向元素数组的指针,只是一个列表。

In [517]: a=array([array([1]), array([2, 3]), array([3, 1, 1]), array([2, 3, 3, 4])], dtype=object)
In [518]: a
Out[518]: 
array([array([1]), array([2, 3]), array([3, 1, 1]), array([2, 3, 3, 4])],
      dtype=object)

一种选择符合此条件的a元素的简单方法是使用列表理解:

In [519]: [row for row in a if row[0]==2]
Out[519]: [array([2, 3]), array([2, 3, 3, 4])]

几乎所有对对象dtype数组的操作都像这样的列表迭代。