所以我想在我的数据集上运行一个算法,第一步是奇异值分解(SVD)。我是基于我在一本书上找到的一个例子,他们使用MatLab并在这个维度为1xn的时间序列上运行SVD。然而,当我试图在python中使用numpy.linalg.svd运行它时,这个错误总是出现,矩阵需要至少有2xn维度。
所以我的问题是:我怎样才能运行SVD与1 × n矩阵(或向量)没有得到这个错误?有人有一个想法吗?这将是非常apreciated:)
现在我知道我可以对这个数据矩阵进行时间堆叠,但我首先想在不执行这一步的情况下运行它,看看我会得到什么样的特征值(我知道它们不能准确地描述我的数据,但我仍然想看看到底是怎么回事)。
1条答案
按热度按时间qrjkbowd1#
在MATLAB中,一切都是二维的(或更多)。在
numpy
中,数组可能是一维的。在将MATLAB示例应用于numpy时请记住这一点。这个错误总是导致矩阵需要具有至少2 × N维。
2xn dimension
到底是什么意思?对于大多数numpy用户来说,它意味着(2,n)的形状,而不是(1,n)或(n,)。当问SO问题时,最好包括实际代码,并准确引用错误。
当我在一个3元素列表上使用
svd
时,它变成了一个(3,)数组:字符串
“2xn dimension”是对这个错误的错误解释。
有一个(1,3)参数:
型
a(3,1):
型
如果你已经有一个一维数组,
arr[:,None]
或arr.reshape(-1,1)
将把它变成(n,1)形状。