【发布时间】:2021-06-17 18:09:53
【问题描述】:
我有一个索引矩阵,例如
I = np.array([[1, 0, 2], [2, 1, 0]])
第 i 行的索引从第 i 行的另一个矩阵 M 中选择一个元素。
所以有我,例如
M = np.array([[6, 7, 8], [9, 10, 11])
M[I] 应该选择:
[[7, 6, 8], [11, 10, 9]]
我可以:
I1 = np.repeat(np.arange(0, I.shape[0]), I.shape[1])
I2 = np.ravel(I)
Result = M[I1, I2].reshape(I.shape)
但这看起来很复杂,我正在寻找更优雅的解决方案。最好不要压扁和整形。
在示例中我使用了 numpy,但实际上我使用的是 jax。所以如果jax中有更高效的解决方案,欢迎分享。
【问题讨论】:
标签: python numpy matrix-indexing