数据分析之NumPy(五)数组间运算
数组与数的运算
arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr + 1
arr * 2
arr / 2
# 可以对比python列表的运算,看出区别
a = [1, 2, 3, 4, 5]
a * 3
数组与数组的运算
arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1, 2, 3, 4], [3, 4, 5, 6]])
上面这个能进行运算吗,结果是不行的!
尝试如下操作呢?
a = np.arange(10).reshape((2,5))
b = np.arange(10,20).reshape((2,5))
a+b
接下来就需要引入数组间操作的规则:广播机制
广播(broadcast)机制
执行 broadcast 的前提在于,两个 ndarray 执行的是 element-wise的运算,Broadcast机制的功能是为了方便不同形状的ndarray(numpy库的核心数据结构)进行数学运算。
当操作两个数组时,numpy会逐个比较它们的shape(构成的元组tuple),只有在下述情况下,两个数组才能够进行数组与数组的运算。
- 维度相等
- shape(其中相对应的一个地方为1)
广播机制的目的在于:把不同形状的两个阵列变成相同
上述(2,1,4)与(3,1)中,从尾部算起,其中第一个数组的末位4,第二个数组的末位为1,符合广播机制中的相对应的一个地方为1,依次往前位数类推,两个数组满足广播机制,所以可以进行运算
再例如:
Image (3d array): 256 x 256 x 3
Scale (1d array): 3
Result (3d array): 256 x 256 x 3
A (4d array): 9 x 1 x 7 x 1
B (3d array): 8 x 1 x 5
Result (4d array): 9 x 8 x 7 x 5
A (2d array): 5 x 4
B (1d array): 1
Result (2d array): 5 x 4
A (2d array): 15 x 3 x 5
B (1d array): 15 x 1 x 1
Result (2d array): 15 x 3 x 5
如果是下面这样,则不匹配:
A (1d array): 10
B (1d array): 12
A (2d array): 2 x 1
B (3d array): 8 x 4 x 3
思考:下面两个ndarray是否能够进行运算?
arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1], [3]])
arr1形状为:(2,6),arr2形状为:(2,1)
矩阵运算
现在思考如下的学生成绩问题:
思考:如何能够直接得出每个学生的成绩?
什么是矩阵
矩阵,英文matrix,和array的区别矩阵必须是2维的,但是array可以是多维的。
- np.mat()
将数组转换成矩阵类型
矩阵乘法运算
矩阵乘法的两个关键:
- 形状改变
- 运算规则
形状改变:必须符合上面的式子,否则运算出错。
运算规则:矩阵乘法api:
-np.matmul
-np.dot
矩阵应用场景
大部分机器学习算法需要用到
版权声明:
笔者博客文章主要用来作为学习笔记使用,内容大部分整理自互联网,如有侵权,请联系博主删除!
赞 (0)