矩阵乘法运算符 【@】

在 Python 中,@ 符号是 矩阵乘法运算符,由 NumPy 引入(Python 3.5+ 支持)。它与 np.matmul 函数等价,但语法更简洁。以下是关键点解读和示例分析:

    一维数组的点积

    • 当操作两个一维数组时,@ 计算它们的点积(对应元素相乘后求和)

    a = np.array([1, 2])
    b = np.array([3, 4])
    print(a @ b)  # 输出 1*3 + 2*4 = 11

    二维数组乘法

    • 当操作两个二维数组(矩阵)时,@ 执行标准的矩阵乘法。

    A = np.array([[1, 2], [3, 4]])
    B = np.array([[5, 6], [7, 8]])
    print(A @ B)  # 输出 [[19 22], [43 50]]

     

    高维数组的广播规则

    • 对于高维数组(如三维),@ 会按最后一个维度与倒数第二个维度进行矩阵乘法,其他维度需满足广播规则。

    import numpy as np
    
    # 使用 NumPy 数组
    a = np.array([1.1])
    b = np.array([2.0])
    result = a @ b  # 或 np.matmul(a, b)
    print(f'1.1 * 2: {result}')   # 输出 [2.2]
    
    a = np.array([1])
    b = np.array([2])
    result = a @ b  # 或 np.matmul(a, b)
    print(f'1 * 2: {result}')   # 输出 2
    
    a = np.array([1])
    b = np.array([0])
    result = a @ b  # 或 np.matmul(a, b)
    print(f'1 * 0: {result}')   # 输出 0
    
    a = np.array([0])
    b = np.array([0])
    result = a @ b  # 或 np.matmul(a, b)
    print(f'0 * 0: {result}')   # 0

    @ vs * vs np.dot

    运算符/函数行为
    @ 或 np.matmul矩阵乘法(支持 高维广播
    *元素级乘法(逐元素相乘,需形状相同)
    np.dot点积或广义矩阵乘法(行为取决于输入维度,与 @ 有时不同)

    总结:

    • @ 是 NumPy 中执行矩阵乘法的简洁运算符,优先使用它替代 np.matmul

    • 对于一维数组,它等同于点积;对于二维及以上数组,遵循矩阵乘法规则。

    • 注意示例中的数值可能存在问题,建议检查输入数据。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值