y = x[np.arange(4).reshape(4, 1), i, np.arange(3).reshape(1, 3)]
示例:
import numpy as np
rng = np.random.default_rng(0)
x = np.arange(4 * 5 * 3)
rng.shuffle(x)
x = x.reshape(4, 5, 3)
i = rng.integers(5, size=[4, 3])
y = x[np.arange(4).reshape(4, 1), i, np.arange(3).reshape(1, 3)]
print("x:", x, "i:", i, "y:", y, sep="\n")
4条答案
按热度按时间50pmv0ei1#
我认为正确答案如下:
示例:
输出:
(橡皮鸭调试FTW)
n3ipq98p2#
使用
np.take_along_axis
:gj3fmq9x3#
使用
np.ix_
的通用方法,可应用于任何axis
:一个内存消耗稍少但特别的替代方案:
cbjzeqam4#
这是一种方法: