python,numpy矩阵必须是二维的

时间:2019-04-09 07:48:24

标签: numpy

为什么line3提高valueError‘矩阵必须为二维’

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

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]])