【发布时间】:2020-06-15 01:11:01
【问题描述】:
如何将多个列向量组合成一个矩阵?例如,如果我有 3 个 10 x 1 向量,如何将它们放入 10 x 3 矩阵? 到目前为止,这是我尝试过的:
D0 =np.array([[np.cos(2*np.pi*f*time)],[np.sin(2*np.pi*f*time)],np.ones((len(time),1)).transpose()],'float').transpose()
这给了我这样的东西,
[[[ 1.00000000e+00 0.00000000e+00 1.00000000e+00]]
[[ 9.99999741e-01 7.19053432e-04 1.00000000e+00]]
[[ 9.99998966e-01 1.43810649e-03 1.00000000e+00]]
...
[[ 9.99998966e-01 -1.43810649e-03 1.00000000e+00]]
[[ 9.99999741e-01 -7.19053432e-04 1.00000000e+00]]
[[ 1.00000000e+00 -2.15587355e-14 1.00000000e+00]]]
但是,我认为这是不对的,它看起来更像是一个列表数组(而且我不能用这种形式进行矩阵乘法)......我也试过 numpy.concatenate,但那没有也不适合我......接下来查看堆栈......
在 Matlab 符号中,我需要把它变成一个表格
D0 =[cos(2*pi*f *t1), sin(2*pi*f*t1) ,1; cos(2*pi*f*t2), sin(2*pi*f*t2) ,1;....] etc
这样我就可以找到最小二乘解s_hat:
s_hat = (D0^T D0)^-1(D0^T x)
其中 x 是另一个输入向量,其中包含我要拟合的正弦曲线样本。
在 Matlab 中,我可以输入
D0 = [cos(2*np.pi*f*time),sin(2*np.pi*f*time), repmat(1,len(time),1)]
创建 D0 矩阵。我如何在 python 中做到这一点?
谢谢!
【问题讨论】:
-
使用 numpy.reshape 函数:docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html 或 numpy.ndarray.reshape
-
谢谢,但我需要先合并向量,然后才能重塑它们,不是吗?
标签: python arrays numpy matrix vector