如何正确地减去 Python 中的矩阵?

How to subtract matrices in Python properly?

我一直在尝试减去两个矩阵(不确定它们是否真的是矩阵,因为其中一个是 pandas 系列)但结果不正确。我添加了代码和输出,如何才能得到正确的 200X1 形状结果?

*X 为 200x4 w 为 4x1

也许它可以帮助:

rng = np.random.default_rng(2022)
df = pd.DataFrame(rng.integers(0, 10, (5, 4)))
sr = pd.Series(rng.integers(0, 10, (5, )))
>>> df
   0  1  2  3
0  7  2  7  0
1  1  6  9  0
2  0  6  8  7
3  8  1  5  0
4  0  4  8  9

>>> sr
0    3
1    9
2    0
3    2
4    6
dtype: int64

>>> df - sr  # does not work
   0  1  2  3   4
0  4 -7  7 -2 NaN
1 -2 -3  9 -2 NaN
2 -3 -3  8  5 NaN
3  5 -8  5 -2 NaN
4 -3 -5  8  7 NaN

>>> df.sub(sr, axis=0)  # work
   0  1  2  3
0  4 -1  4 -3
1 -8 -3  0 -9
2  0  6  8  7
3  6 -1  3 -2
4 -6 -2  2  3

你可以重塑 y_hat :

y - y_hat.reshape(-1,1)

你得到 (200,200) 的原因是因为 numpy 广播,它将 y_hat 视为 (1,200),所以为了匹配形状,numpy 将 y 广播到 (200,200)y_hat 变成 (200,200) 然后做减法。