给定以下数据数组:
d=np.array([10,11,12,13,14])
还有另一个索引数组:
i=np.array([0, 2, 3, 6])
如何以良好的方式使用i
(d [i]
)索引d
,以便在6
时不会出现索引超出范围的错误,而是得到:
np.array([10, 12, 13])
i[i < d.size]
来获取小于 d
长度的元素:print(d[i[i < d.size]])
[10 12 13]
在使用i
之前,清理它非常容易:
In [150]: d[i[i<d.shape[0]]]
Out[150]: array([10, 12, 13])
np.take
有几种处理越界索引的 modes
,但 'ignore' 不是其中之一。
valid_indices = i[(i >= 0) & (i < len(d))]
selected_items = d[valid_indices]
NumPy似乎没有提供一种错误处理模式,可以跳过无效的索引,这可能是因为在结果数组是多维的情况下跳过它们并没有太多意义。相反,只需选择处于有效范围内的i
元素,并使用这些元素进行索引。
d[i<d.size]
。 - Divakar