主要是要把后面的矩阵看成未知数的系数就比较容易懂了.
python numpy dot 矩阵乘法_线性方程组
矩阵的最初目的,只是为线性方程组提供一个简写形式。

python numpy dot 矩阵乘法_矩阵乘法_02
然后测试了一下瞬间就明白了了.
先来一个所有的x,y,都是2的.矩阵乘法.

import numpy as np
import pandas as pd

a=[
    [1,1,1,3], 
    [2,2,2,2],
    [1,1,1,3],
    [2,2,2,2]
  ]
b =  [2,2,2,2] # 注意这里是列矩阵,不是行矩阵. 也就是竖着的1列4行,每个都是2 但是这样横着写恰巧符合我们人类的视角.
#b是4个数, 要跟上面的列数相同.
df1 = pd.DataFrame(a)
df2 = pd.DataFrame(b) 
np.dot(df1,df2)

得到的结果是

[
[12],# a第1行 * b的第一列  = 1*2 + 1*2 + 1*2 + 1*3 = 12
[16],# a第2行 * b的第一列  = 2*2 + 2*2 + 2*2 + 2*2 = 16
[12],# a第3行 * b的第一列  = 1*2 + 1*2 + 1*2 + 1*3 = 12
[16] # a第4行 * b的第一列  = 1*2 + 1*2 + 1*2 + 1*3 = 12
]

然后再后面 加一个所有的x都是3的.矩阵乘法.

import numpy as np
import pandas as pd

a=[
    [1,1,1,3],
    [2,2,2,2],
    [1,1,1,3],
    [2,2,2,2]
  ]
b =  [
    [2,3] ,
    [2,3] ,
    [2,3] ,
    [2,3] 
    ]

df1 = pd.DataFrame(a)
df2 = pd.DataFrame(b)

np.dot(df1,df2)

下面的结果第一列是x=2时 * 矩阵a 的结果
和 x=3 第一列 * 矩阵a 的结果

[
[12, 18],
[16, 24],
[12, 18],
[16, 24]
]

同样的, 如果把b改成

b =  [
    [2,3,4] ,
    [2,3,4] ,
    [2,3,4] ,
    [2,3,4] ,
    ]
# 结果是 24,32,24,32 是系数全为4的矩阵成绩
[
[12, 18, 24],
[16, 24, 32],
[12, 18, 24],
[16, 24, 32]
]