无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(numpy dot) Numpy中np.dot与np.matmul的区别详解 numpy np.dot() 和 np.matmul() 全网首发(图文详解1)

前沿技术 Micheal 6个月前 (06-03) 42次浏览 已收录 扫描二维码

(numpy dot) Numpy中np.dot与np.matmul的区别详解

Numpy是一个非常流行的Python科学计算库,而np.dot()np.matmul()是numpy中用于数组和矩阵乘法的两个重要函数。两者有共同点也有区别。

np.dot()

  • 对于二维数组,它等同于矩阵乘法。
  • 对于一维数组,计算两者的内积。
  • 对于N维数组,它是一个更加通用的点积操作。

np.matmul()

  • 仅限于两个数组的点积。(自Python 3.5开始,可以通过@运算符使用该函数)
  • 它不能将标量作为输入。
  • 它可以处理二维以上的数组进行矩阵乘法,但最后两维表示的必须是有效的矩阵。

基本的使用方法如下:

np.dot()示例代码:

import numpy as np

# 对于一维数组,计算内积
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(np.dot(a, b))  # Prints "32" - (1*4 + 2*5 + 3*6)

# 对于二维数组,执行矩阵乘法
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(np.dot(A, B))
"""
Prints:
[[19 22]
 [43 50]]
"""

np.matmul()示例代码:

import numpy as np

# 对于二维数组,执行矩阵乘法
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(np.matmul(A, B))
"""
Prints:
[[19 22]
 [43 50]]
"""

# 对于高维数组的例子
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.array([[9, 10], [11, 12]])

# 使用matmul进行矩阵乘法
result = np.matmul(a, np.matmul(b, c))
print(result)
"""
Prints:
[[ 403  440]
 [ 927 1012]]
"""

# 使用运算符@来代替matmul函数
result_operator = a @ (b @ c)
print(result_operator)
"""
Prints:
[[ 403  440]
 [ 927 1012]]
"""

在这两个例子中,您可以看到对于二维数组,np.dotnp.matmul的效果是一样的。但对于更高维度的数组,它们的行为会有所不同,所以您选择使用哪一个,需要根据您的具体需求来决定。

只要您的系统安装了Python和Numpy库(通常通过pip安装:pip install numpy),那么上面的代码应该直接可以运行,无需其他特别的配置或开发流程。
(python列表删除某个元素) python删除列表元素的三种方法(remove,pop,del) $ Python 列表元素删除方法 $ 全网首发(图文详解1)
(nn.softmax) 详解TensorFlow的 tf.nn.softmax 函数:softmax 激活函数 TensorFlow中的softmax激活函数 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝