为什么line3提高valueError‘矩阵必须为二维’
import numpy as np
np.mat([[[1],[2]],[[10],[1,3]]])
np.mat([[[1],[2]],[[10],[1]]])
答案 0 :(得分:1)
此代码引发错误的原因是因为NumPy尝试使用嵌套级别(嵌套级别->维度)来确定输入的维数。 如果在某些级别上某些元素的长度不同(即它们不兼容),它将使用 destest 嵌套,使用对象作为数组的元素来创建数组。
由于这个原因:
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]])