如何在NumPy数组中获取非连续索引的元素?

3
假设我有一个numpy数组:
arr = np.array([1,2,3,4,4,5,3,2,10])
还有一个索引数组:
indices = np.array([0,1,4,6])
我可以编写一个简单的函数来完成这个任务,但我想知道是否有numpy内置函数像np.get(arr, indices)这样返回结果,例如在本例中,返回np.array([1,2,4,3])。

6
arr[indices] 是NumPy数组中基于索引进行切片的一种方式。它通过提供索引列表(可以是整数或布尔值)来获取数组中相应位置的元素。这些索引可以是单个数字、切片对象或一个包含数字和切片的元组。 - sascha
哎呀!真不敢相信我竟然没试过那个。谢谢你! - happy_sisyphus
2
仍需阅读文档以了解其效果(视图 vs. 复制)! - sascha
1个回答

2
这被称为高级索引
当选择对象是非元组序列对象、ndarray(整数或布尔数据类型)或至少有一个序列对象或ndarray(整数或布尔数据类型)的元组时,会触发高级索引。高级索引有两种类型:整数和布尔。
高级索引总是返回数据的副本(与基本切片相对)。你所处的情况是整数高级索引,其中你传递了一个要检索的索引数组。正如sascha在评论中指出的那样,这将创建数据的副本,因此新的数组将独立于原始数组存在(即,对其进行写入不会修改原始数组)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接