我有一个2D阵列:
BlacklistingTextInputFormatter(
RegExp(
r'(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])'
),
),
和另一个索引:
x = np.array([[4, 5, 6],
[7, 8, 9]])
如何使用 a 中各行的索引对 x 的每一行进行切片,而不使用循环来获取:
a = np.array([[0, 1],
[1, 2]])
答案 0 :(得分:2)
尝试一下:
import numpy as np
x = np.array([[4, 5, 6],
[7, 8, 9]])
a = np.array([[0, 1],
[1, 2]])
print(np.take_along_axis(x,a,1))
答案 1 :(得分:0)
您可以使用numpy.take_along_axis
np.take_along_axis(x,a,1)
# array([[4, 5],
# [8, 9]])
或手动添加第一个坐标(适用广播)
x[np.c_[:2],a]
# array([[4, 5],
# [8, 9]])
答案 2 :(得分:0)
从技术上讲,我知道这是一个循环,但是您可以使用列表理解功能在一行中完成它。
print(np.array([x[i][a[i]] for i in range(0, x.shape[0])]))