从数组创建矩阵

Aut*_*Eng 2 python arrays numpy matrix

我正在尝试从数组中构造一个矩阵对象。该数组的长度为 25,我想做的是用它构造一个 5x5 矩阵。我使用了 numpy.asmatrix() 和矩阵构造函数,但两者都会生成长度为 1 的矩阵。因此,基本上发生的情况是数组的所有元素都被视为元组并插入到新创建的矩阵中。有什么办法可以解决这个问题,以便我可以完成我想要的事情吗?

编辑:当我写“数组”时,我天真地指的是一个普通的Python列表,而不是一个实际的numpy.array,这会让事情变得更简单。我的一个错误。

Ran*_*ndy 5

认为你可能只是想要.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]])
Run Code Online (Sandbox Code Playgroud)

np.matrix如果您需要其中的内容,您也可以将其转换为after :

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]])
Run Code Online (Sandbox Code Playgroud)

编辑:如果你有一个列表要开始,那还不错:

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]])
Run Code Online (Sandbox Code Playgroud)