我有一个任意长度的向量,我想将其重塑为一个正方形矩阵,如下所示:
np.arange(6).reshape((3, 3))
[1,2,x] [1,2,3]
[3,4,x] [4,5,6]
[5,6,x] [x,x,x]
x
可以水平和/或垂直放置。显然,
reshape
函数将仅允许上述示例中的(3,2)之类的参数。有没有一种方法可以产生方形矩阵的效果。谢谢。 最佳答案
在重塑之前或之后,您必须填充阵列。
例如,使用resize
方法添加所需的0:
In [409]: x=np.arange(6)
In [410]: x.resize(3*3)
In [411]: x.shape
Out[411]: (9,)
In [412]: x.reshape(3,3)
Out[412]:
array([[0, 1, 2],
[3, 4, 5],
[0, 0, 0]])
np.resize
复制值。 np.pad
也很容易添加0,尽管它可能会过大。使用
np.arange(6)
,我们可以在重塑之前或之后进行填充。使用np.arange(5)
之前,我们必须坚持,因为填充是不规则的。In [409]: x=np.arange(6)
In [410]: x.resize(3*3)
In [411]: x.shape
Out[411]: (9,)
In [412]: x.reshape(3,3)
Out[412]:
array([[0, 1, 2],
[3, 4, 5],
[0, 0, 0]])
无论如何,在一个调用中没有一个函数可以完成所有这些操作-至少我不知道。这不是足够常见的操作。
关于python - 在numpy中将任意长度的矢量整形为方矩阵,并填充,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41176248/