You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Numpy实现4×4矩阵与4×1向量相乘得到4×1结果?

用Numpy实现4×4矩阵与4×1向量的矩阵乘法

问题根源

你用A*x得到4×4矩阵,是因为Numpy里的*是逐元素乘法——当向量x是一维数组时,会触发广播机制,把x扩展成和A一样的4×4矩阵,再逐个元素相乘,结果自然是4×4。而你需要的是线性代数里的矩阵-向量乘法。

三种解决方法

下面是实现正确矩阵乘法的三种常用方式,都能得到你要的4×1结果:

1. @运算符(Python 3.5+推荐用这个)

这是Numpy专门为矩阵乘法设计的简洁写法,直接对应线性代数里的矩阵乘法规则。

2. numpy.dot()函数

传统的点积计算函数,完全支持矩阵与向量的乘法运算。

3. numpy.matmul()函数

专门用于矩阵乘法的函数,和@运算符的效果完全一致。

完整代码示例

先定义你的矩阵A和向量x:

import numpy as np

# 4×4矩阵A
A = np.array([
    [2, 2, 1, 4],
    [1, -3, 2, 3],
    [-1, 1, -1, -1],
    [1, -1, 1, 2]
])

# 4×1列向量x(这里定义成二维数组,形状是(4,1))
x = np.array([[1], [0], [-1], [1]])

然后用任意一种方法计算:

方法1:@运算符

b = A @ x
print(b)

方法2:np.dot()

b = np.dot(A, x)
print(b)

方法3:np.matmul()

b = np.matmul(A, x)
print(b)

三种方法输出的结果都是你预期的4×1矩阵:

[[ 5]
 [ 2]
 [-1]
 [ 2]]

额外提示

如果你的x是一维数组(比如x = np.array([1, 0, -1, 1]),形状为(4,)),用上面三种方法得到的会是一维数组,你可以用.reshape(4,1)把它转成4×1的二维矩阵:

x_1d = np.array([1, 0, -1, 1])
b = A @ x_1d
b = b.reshape(4, 1)

内容的提问来源于stack exchange,提问作者Pedro Sousa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:02:36