使用包含超出边界值的另一个数组索引numpy数组

时间:2015-06-02 20:14:20

标签: python arrays numpy

给出以下数据数组:

d=np.array([10,11,12,13,14]) 

和另一个索引数组:

i=np.array([0, 2, 3, 6])

使用di)为d[i]编制索引的好方法是什么,以便6代替索引越界错误,我会得到:

np.array([10, 12, 13])

3 个答案:

答案 0 :(得分:4)

在使用之前清理self.platform = 'Vudu'很容易:

i

In [150]: d[i[i<d.shape[0]]] Out[150]: array([10, 12, 13]) 有几个np.take用于处理越界索引,但'ignore'不是其中之一。

答案 1 :(得分:3)

也许使用i[i < d.size]]来获取小于d长度的元素:

print(d[i[i < d.size]])
[10 12 13]

答案 2 :(得分:0)

valid_indices = i[(i >= 0) & (i < len(d))]
selected_items = d[valid_indices]

NumPy似乎没有提供跳过无效索引的错误处理模式,可能是因为当结果数组是多维的时,跳过它们并没有多大意义。相反,只需在有效范围内选择i的元素,并使用这些元素进行索引。