索引一个索引数组的多维numpy数组
问题描述:
我很难索引一个索引数组的二维数组。索引一个索引数组的多维numpy数组
假设我有:
# Indexing array
idx = np.array([0,2,1,2,1])
# Array to be indexed
my_array = np.array([[0,2,1], [0,5,1], [1,2,1], [5,1,3], [2,6,2]])
和预期输出应该是0
指数my_array
第一项的my_array
第二项的2
指数等,因此:
# Expected output
expected_array = np.array([0,1,2,3,6])
我已经使用for循环实际上做了它:
# Using for-loop
expected_array = np.array([])
for i in range(len(my_array)):
expected_array = np.append(idx, my_array[i][idx[i]])
但我想知道是否有办法可能做阵列索引不使用for-loops?假设len(idx)==len(my_array)
一直在。
答
您可以使用numpy.arange
来创建一个数组来索引行,这些行一次只是每行。然后使用idx
数组来索引每行。
>>> my_array[np.arange(my_array.shape[0]), idx]
array([0, 1, 2, 3, 6])