Python中如何正确获取numpy.matrix矩阵的单个元素
问题原因
numpy 的 matrix 是强制二维的数据结构,执行 m[0] 时返回的是矩阵第0行的二维行矩阵(形状为 (1, 2)),继续用 [0] 索引该二维行矩阵的第0维,依然会返回整个行矩阵,最终得到 [[1 2]],不符合预期。
解决方法
- 方法1:使用 numpy 标准多维度逗号索引,直接定位到目标位置,是当前场景下最推荐的写法:
import numpy as np m = np.matrix('[1, 2; 3, 4]') print(m[0, 0])
运行后即可输出目标值1。
- 方法2:如果要保持两次索引的写法,可以对返回的行矩阵调用
item()方法取指定位置的标量:
print(m[0].item(0))
- 方法3(长期使用更推荐):numpy 官方已不再推荐使用
np.matrix类型,改用np.array创建二维数组即可兼容[0][0]的常规索引写法:
import numpy as np m = np.array([[1, 2], [3, 4]]) print(m[0][0])
该写法同样会输出1,且 np.array 是 numpy 主推的通用数据结构,适配更多官方API。
内容的提问来源于stack exchange,提问作者hoyongj
相关产品推荐
相关产品推荐

