numpy乘法matmul()、multiply()、dot()

numpy.matmul() 函数

矩阵乘法在机器学习中非常重要,本文介绍numpy矩阵乘法

计算过程

(m,i)的矩阵 * (i,n)的矩阵 = (m,n)的矩阵

官方api文档:
https://numpy.org/devdocs/reference/generated/numpy.matmul.html?highlight=matmul#numpy.matmul

语法

numpy.matmul(x1,x2)
参数说明
  • x1:类数组类型
  • x2:类数组类型
返回值

ndarray

例子

import numpy as np

# 3行3列
a=[
  [80,75,60],
  [85,80,70],
  [75,70,50],
]

# 3行1列
b=[
    [0.2],
    [0.3],
    [0.5]
]

# 3行1列
c=np.matmul(a,b)
print(c)
print(c.shape)

执行结果如下:

[[68.5]
 [76. ]
 [61. ]]
(3, 1)

numpy.multiply()函数

数组 或 矩阵,对应位置相乘,输出与相乘数组/矩阵的大小一致

语法

numpy.multiply(x1,x2)
参数说明
  • x1:类数组类型
  • x2:类数组类型
返回值

ndarray

例子

a = np.array([[1, 2],[3, 4]])
b = np.array([[0, 1],[2, 3]])
np.multiply(a,b)

执行结果:

array([[ 0,  2],
       [ 6, 12]])

numpy.dot()函数

dot()比较复杂,因为参数的不同可以实现等同于np.matmul() 或者 np.multiply()(数组乘法)的作用

语法

numpy.dot(x1,x2)
参数说明
  • 如果x1和x2都是一维的,结果是 内积
  • 如果x1和x2都是 二维 的,结果是 矩阵乘法
  • 如果x1和x2有一个是标量,结果是 数组乘法

乘号*

等同np.multiply()函数,对应位置相乘,不是矩阵相乘

import numpy as np
a=np.arange(0,6).reshape(3,2)

b=np.array([[1],[2],[3]])

print(a)
print('----')
print(b)

print('----')
d=a*b
print(d)
print("形状:",d.shape)

执行结果:

[[0 1]
 [2 3]
 [4 5]]
----
[[1]
 [2]
 [3]]


[[ 0  1]
 [ 4  6]
 [12 15]]
形状: (3, 2)

原文出处:/show_1EF3pm5L3BBB.html