【发布时间】:2018-10-05 11:25:06
【问题描述】:
我有一个维度为 n 的数组 a 和一个维度为 n-1 的数组 b。
b 的最后一个轴的值对应于我要从数组 a 中提取的值的索引,位于维度为 n-1 的数组 res 中。
例如 n=2 :
a = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12])
b = np.array([1,3,0])
我愿意
res = [a[1], a[3], a[0]]
# i.e. res = [2, 8, 9]
是否有一种功能可以有效地完成它,具有更多的维度?我知道我可以使用for 循环,但我希望有更高效的方法。
编辑:
在 n=3 的情况下,让 a 的形状为 (2,2,3)。
那么b 和res 的形状为(2,2):
a = np.array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10,11,12]]])
b = np.array([[0,2],
[1,2]]
# res = np.array([[1,6],
# [8,12]])
【问题讨论】:
-
相关:2d案例回答here.
-
新的
np.take_along_axis会申请吗? -
Tkanks 完美运行!我在正确的时间需要它;)
标签: python arrays numpy indexing