欢迎关注WX公众号:【程序员管小亮】
这两天在看吴恩达深度学习作业的代码时,碰到了np.dot()、np.outer()、np.multiply()、*等四个函数,特此记录。
一、np.dot()
- 如果处理的是一维数组,则得到的是两数组的內积
import numpy as np
a = np.arange(0,9)
b = a[::-1]
np.dot(a,b)
> 84
- 如果是二维数组(矩阵)之间的运算,则得到的是矩阵积
import numpy as np
a = np.arange(1,5).reshape(2,2)
b = np.arange(5,9).reshape(2,2)
np.dot(a,b)
> array([[19, 22],
[43, 50]])
- dot()函数可以通过numpy库调用,也可以由数组实例对象进行调用。a.dot(b) 与 np.dot(a,b)效果相同。
二、np.multiply()
np.multiply()表示的是数组和矩阵对应位置相乘,输出和输出的结果shape一致。
- 数组
import numpy as np
a = np.arange(0,9)
b = a[::-1]
np.multiply(a,b)
> array([ 0, 7, 12, 15, 16, 15, 12, 7, 0])
- 矩阵
import numpy as np
a = np.arange(1,5).reshape(2,2)
b = np.arange(0,4).reshape(2,2)
np.multiply(a,b)
> array([[0, 2],
[6, 12]])
三、np.outer()
np.outer()表示的是两个向量相乘,拿第一个向量的元素分别与第二个向量所有元素相乘得到结果的一行。
- 数组
import numpy as np
a = np.arange(0,9)
b = a[::-1]
np.outer(a,b)
> array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 8, 7, 6, 5, 4, 3, 2, 1, 0],
[16, 14, 12, 10, 8, 6, 4, 2, 0],
[24, 21, 18, 15, 12, 9, 6, 3, 0],
[32, 28, 24, 20, 16, 12, 8, 4, 0],
[40, 35, 30, 25, 20, 15, 10, 5, 0],
[48, 42, 36, 30, 24, 18, 12, 6, 0],
[56, 49, 42, 35, 28, 21, 14, 7, 0],
[64, 56, 48, 40, 32, 24, 16, 8, 0]])
- 矩阵
import numpy as np
a = np.arange(1,5).reshape(2,2)
b = np.arange(0,4).reshape(2,2)
np.outer(a,b)
> array([[ 0, 1, 2, 3],
[ 0, 2, 4, 6],
[ 0, 3, 6, 9],
[ 0, 4, 8, 12]])
四、*
- 如果处理的是数组,则得到的是对应位置相乘
import numpy as np
a = np.arange(0,9)
b = a[::-1]
a*b
> array([ 0, 7, 12, 15, 16, 15, 12, 7, 0])
- 如果处理的是矩阵,则得到的是矩阵相乘
import numpy as np
a = np.arange(1,5).reshape(2,2)
b = np.arange(0,4).reshape(2,2)
a*b
> array([[0, 2],
[6, 12]])
python课程推荐。