【问题标题】:python,numpy matrix must be 2-dimensionalpython,numpy 矩阵必须是二维的
【发布时间】:2019-08-30 10:32:58
【问题描述】:

为什么line3 raise valueError‘矩阵一定是二维的’

import numpy as np
np.mat([[[1],[2]],[[10],[1,3]]])
np.mat([[[1],[2]],[[10],[1]]])

【问题讨论】:

标签: numpy


【解决方案1】:

此代码引发错误的原因是 NumPy 尝试使用嵌套级别(嵌套级别 -> 维度)确定输入的维度。 如果在某种程度上,某些元素的长度不同(即它们不兼容),它将使用嵌套的最深来创建数组,使用对象作为数组的元素。

出于这个原因:

np.mat([[[1],[2]],[[10],[1,3]]])

会给你一个对象矩阵(列表),同时:

np.mat([[[1],[2]],[[10],[1]]])

将导致np.mat() 不想挤入矩阵的 3D 数字数组。

另外,请避免在您的代码中使用np.mat(),因为它已被弃用。 请改用np.array()

顺便说一句,np.array() 在这两种情况下都可以工作,它会给你一个(2, 2, 1) 形状的数组int,如果你愿意,你可以将np.squeeze() 放入一个矩阵中。 但是,如果您想要的只是一个矩阵,最好从嵌套级别 2 开始:

np.array([[1, 2], [10, 1]])

【讨论】:

  • 没问题。如果这解决了您的问题,也许您可​​以投票/标记为解决方案。