(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.dot
和np.matmul
的效果是一样的。但对于更高维度的数组,它们的行为会有所不同,所以您选择使用哪一个,需要根据您的具体需求来决定。
只要您的系统安装了Python和Numpy库(通常通过pip安装:pip install numpy
),那么上面的代码应该直接可以运行,无需其他特别的配置或开发流程。
(python列表删除某个元素) python删除列表元素的三种方法(remove,pop,del) $ Python 列表元素删除方法 $ 全网首发(图文详解1)
(nn.softmax) 详解TensorFlow的 tf.nn.softmax 函数:softmax 激活函数 TensorFlow中的softmax激活函数 全网首发(图文详解1)