我认为我的问题应该很简单,但我找不到任何帮助 在互联网上。我对 Python 很陌生,所以有可能 我遗漏了一些非常明显的东西。
我有一个数组 S,像这样 [x x x](一维)
。我现在创建一个
对角矩阵,sigma
,带有 np.diag(S)
- 到目前为止,一切都很好。现在,我想
调整这个新的对角数组的大小,以便我可以将它乘以另一个数组
我有。
import numpy as np
...
shape = np.shape((6, 6)) #This will be some pre-determined size
sigma = np.diag(S) #diagonalise the matrix - this works
my_sigma = sigma.resize(shape) #Resize the matrix and fill with zeros - returns "None" - why?
但是,当我打印 my_sigma
的内容时,我得到 "None"
。有人可以请
指出我正确的方向,因为我无法想象这应该是
好复杂。
提前感谢您的帮助!
卡斯帕
图形:
我有这个:
[x x x]
我想要这个:
[x 0 0]
[0 x 0]
[0 0 x]
[0 0 0]
[0 0 0]
[0 0 0] - or some similar size, but the diagonal elements are important.
最佳答案
在 1.7.0 版本中有一个新的 numpy 函数 numpy.pad
可以在一行中做到这一点。与其他答案一样,您可以使用 np.diag
构造对角矩阵在填充之前。
此答案中使用的元组 ((0,N),(0,0))
表示要填充的矩阵的“边”。
import numpy as np
A = np.array([1, 2, 3])
N = A.size
B = np.pad(np.diag(A), ((0,N),(0,0)), mode='constant')
B
现在等于:
[[1 0 0]
[0 2 0]
[0 0 3]
[0 0 0]
[0 0 0]
[0 0 0]]
关于Python:调整现有数组的大小并用零填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251635/