我有一个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那样的简单而又不错的方法呢?
答案 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数组的操作都像这样的列表迭代。