【发布时间】:2012-03-04 07:55:46
【问题描述】:
我认为我的问题应该很简单,但我找不到任何帮助 在互联网上。我对 Python 很陌生,所以有可能 我遗漏了一些非常明显的东西。
我有一个数组 S,就像这样 [x x x] (one-dimensional)。我现在创建一个
对角矩阵 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.
【问题讨论】:
-
您是在定义 shape()、diag() 和 resize(),还是来自您正在使用的库?
-
resize() 来自 numpy 库,我应该指定的。
-
这是 numpy,对吧?如果我理解正确,sigma 中有数据,但您希望使 sigma 更大并将新元素填充为零。那是对的吗?如果您只需要一个新的零填充数组,请使用
numpy.zeros((6,6)) -
np.shape((6, 6))返回(6,6)的形状(2,)可能不是您想要的(6,6)。重塑诊断矩阵对我来说没有意义。你里面大部分都是零....不确定你真正想要什么 -
我需要将 sigma 与它的当前数据一起使用,但我还需要调整它的大小,以便可以将它与另一个矩阵相乘。因此,我只需要将 sigma 设置为适当的大小,用零填充剩余的值正是我想要的。我正在做一个奇异值分解,sigma 是我的 S 矩阵,它必须对角化并与我的 MxM S 矩阵相乘。
标签: python arrays matrix numpy resize