如何获取和设置具有二维矩阵列索引的一维数组?



>假设你有一个矩阵:

a = np.arange(9).reshape(3,3)
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])

我想获取或设置值 1、5 和 6,我将如何做到这一点。

例如我想做

# getting
b = a[:, np.array([1,2,0])]
# want b = [1,5,6]
# setting
a[:, np.array([1,2,0])] = np.array([9, 10, 11])
# want:
# a = array([[0, 9, 2],
#            [3, 4, 10],
#            [11, 7, 8]])

会这样做,但事实并非如此。对此有什么想法吗?

只需稍作调整即可完成此操作:

import numpy as np
a = np.arange(9).reshape(3,3)
# getting
b = a[range(a.shape[0]), np.array([1,2,0])]
# setting
a[range(a.shape[0]), np.array([1,2,0])] = np.array([9, 10, 11])

代码未按预期工作的原因是,您正在使用切片而不是索引来索引 x 轴。切片意味着获取所有行,但直接指定索引将为每个索引值获得所需的行。

最新更新