我正在尝试重新排列某些数组,但它似乎始终无法正常运行:
# Works fine
arr = np.array([2,3,1])
idx1 = np.array([1,0,2])
arr[idx1]
>> array([3, 2, 1])
# Doesn't work
arr = np.array([2,3,1])
idx2 = np.array([2,0,1])
arr[idx2]
>> array([1, 2, 3]) # Should have been [3,1,2]
我做错了吗?
答案 0 :(得分:0)
索引使用索引数组重建数组。 索引数组包含原始数组中元素的位置(索引)列表。
Numpy数组可能会被其他数组(或任何其他序列)索引 - 喜欢可以转换为数组的对象,例如列表 元组除外;请参阅本文档的最后部分,了解其原因。 索引数组的使用范围从简单,直接的情况到 复杂,难以理解的案例。对于索引数组的所有情况,什么 返回的是原始数据的副本,而不是获取的视图 切片。
索引数组必须是整数类型。数组中的每个值 指示数组中的哪个值代替索引。
在你的情况下:
arr = np.array([2,3,1])
idx2 = np.array([2,0,1])
索引 [2, 0, 1]
表示[third element, first element, second element]
使用arr[idx2]
,您获得[1, 2, 3]
。没错。
示例:索引包含第二和第三个元素
>>> arr[np.array([1,2])]
array([3, 1])