给定一个索引数组,我很难索引一个二维数组。
假设我有:
# 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
的2
索引,第二个条目的索引my_array
等等,因此:
# 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 循环的情况下进行数组索引?一直假设len(idx)==len(my_array)
。
您可以使用numpy.arange
创建一个数组来索引行,一次只能是每一行。然后使用您的idx
数组索引每一行。
>>> my_array[np.arange(my_array.shape[0]), idx]
array([0, 1, 2, 3, 6])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句