>假设你有一个矩阵:
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 轴。切片意味着获取所有行,但直接指定索引将为每个索引值获得所需的行。