错误:ValueError: shapes (3,1) and (3,2) not aligned: 1 (dim 1) != 3 (dim 0)
发生错误的原因是矩阵大小不同,但是如何将两个大小不同的矩阵相乘,以及得到的输出应该在哪里:[-0.78 0.85]
import numpy as np
x1 = 3-7/3;
x2 = 2-4/3;
x3 = 1-5/3;
X = ([x1], [x2],[x3])
V = ([-0.99, -0.13], [-0.09, 0.70],[0.09, -0.70])
res = np.dot(X,V)
print("Res: ",res)任何帮助都是非常感谢的!
数学问题,为了更好的理解:
对由N×M矩阵x1、x2和x3三个数据点组成的数据集进行主成分分析,使得矩阵的每一行都是一个数据点。假设矩阵X与X对应,每列的平均值为:
X = (3.00,2.00,1.00,4.00,1.00,2.00,0.00,1.00,2.00)
假设X̃有奇异值分解:
V = (-0.99,-0.13,-0.00,-0.09,0.70,-0.71,0.09,-0.70,-0.71)
第一次观测x1投影到包含最大变化的二维子空间的坐标(四舍五入到两位数)是什么?
答案:
投影可以通过减去X的平均值并投影到V的前两列来找到。第一点减去平均坐标: 2-7/3 2-4/3 1-5/3。
这应该与V的前两列相乘(左)
(3-7/3,2-4/3,1-5/3) * (-0.99,-0.13,-0.09,0.70,0.09,-0.70) = -0.78 0.85
所以我想找出如何在python中计算这个。
发布于 2022-04-04 09:38:05
我假设你想做矩阵乘法。如果矩阵的维数不同,则无法实现这一点。您可以使用reshape和numpy.matmul()实现所需的结果。
代码:
import numpy as np
x1 = 3-7/3;
x2 = 2-4/3;
x3 = 1-5/3;
X = np.array([[x1], [x2],[x3]])
X = X.reshape(1, 3)
V = np.array([[-0.99, -0.13], [-0.09, 0.70],[0.09, -0.70]])
res = np.matmul(X, V)
print("Res: ",res)https://stackoverflow.com/questions/71734851
复制相似问题