将两个不同维度的矩阵相乘python
Multiply two matrices with different dimensions python
错误: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)
感谢任何帮助!
一道数学题,为了更好的理解:
对一个数据集进行主成分分析,该数据集由三个数据点 x1、x2 和 x3 收集在一个 N × M 矩阵 X 中,使得矩阵的每一行是一个数据点。假设矩阵 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 中计算它。
我假设您希望执行矩阵乘法。如果矩阵的维数不同,则无法实现。您可以使用 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)
错误: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)
感谢任何帮助!
一道数学题,为了更好的理解:
对一个数据集进行主成分分析,该数据集由三个数据点 x1、x2 和 x3 收集在一个 N × M 矩阵 X 中,使得矩阵的每一行是一个数据点。假设矩阵 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 中计算它。
我假设您希望执行矩阵乘法。如果矩阵的维数不同,则无法实现。您可以使用 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)