我正在尝试从数组构造矩阵对象。该数组的长度为 25,而我要做的是从中构造一个 5x5 矩阵。我同时使用了 numpy.asmatrix() 和矩阵构造函数,但两者都产生了一个长度为 1 的矩阵。所以,基本上发生的是数组的所有元素都被视为一个元组并插入到新创建的矩阵中.有什么办法可以解决这个问题,这样我就可以完成我想要的吗?
编辑: 当我写“数组”时,我天真地指的是普通的 python 列表,而不是实际的 numpy.array,这会使事情变得更简单。我的错误。
最佳答案
认为您可能只需要 .reshape()
:
In [2]: a = np.arange(25)
In [3]: a
Out[3]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24])
In [4]: a.reshape(5,5)
Out[4]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
如果你需要的话,你也可以把它转换成一个np.matrix
:
In [5]: np.matrix(a.reshape(5,5))
Out[5]:
matrix([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
编辑:如果你有一个列表开始,它仍然不错:
In [16]: l = range(25)
In [17]: np.matrix(np.reshape(l, (5,5)))
Out[17]:
matrix([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
关于python - 从数组创建矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33612432/