Python数组——Numpy(6)

这篇博客详细介绍了NumPy中的数组运算,包括数组与数、数组与数组之间的运算,以及广播机制的概念和应用。重点讲解了矩阵运算,如使用`np.matmul`和`np.dot`进行矩阵乘法,并在实际学生综合成绩的场景中进行了示例。同时,强调了广播机制在不同形状数组运算中的作用和规则,以及矩阵乘法在机器学习中的重要性。
摘要由CSDN通过智能技术生成

学习目标

  • 目标

    • 说明数组间运算的广播机制
    • 知道数组与数之间的运算
    • 知道数组与数组之间的运算
    • 理解矩阵的特点以及运算规则
    • 应用np.matmul实现矩阵运算
  • 应用

    • 学生综合成绩矩阵运算

1 场景

数据:

[[80, 86],
[82, 80],
[85, 78],
[90, 90],
[86, 82],
[82, 90],
[78, 80],
[92, 94]]

2 数组与数的运算

arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr + 1
arr / 2

# 可以对比python列表的运算,看出区别
a = [1, 2, 3, 4, 5]
a * 3

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]])

上面这个能进行运算吗,结果是不行的!

4 广播机制

执行 broadcast 的前提在于,两个 ndarray 执行的是 element-wise的运算,Broadcast机制的功能是为了方便不同形状的ndarray(numpy库的核心数据结构)进行数学运算。

当操作两个数组时,numpy会逐个比较它们的shape(构成的元组tuple),只有在下述情况下,两个数组才能够进行数组与数组的运算。

  • 维度相等
  • shape(其中相对应的一个地方为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      (3d array):  15 x 3 x 5
B      (3d array):  15 x 1 x 1
Result (3d 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]])

答案是可以的 

5 矩阵运算

5.1 矩阵乘法api:

  • np.matmul
  • np.dot
a = np.array([[80, 86],
              [82, 80],
              [85, 78],
              [90, 90],
              [86, 82],
              [82, 90],
              [78, 80],
              [92, 94]])
b = np.array([[0.7], 
              [0.3]])

np.matmul(a, b)

np.dot(a,b)

np.matmul和np.dot的区别:

二者都是矩阵乘法。 np.matmul中禁止矩阵与标量的乘法。 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。

5.2 矩阵应用场景

大部分机器学习算法需要用到

6 小结

  • 1.数组运算,满足广播机制,就OK【知道】
    • 1.维度相等
    • 2.shape(其中对应的地方为1,也是可以的)
  • 2.矩阵运算【掌握】
    • np.matmul
    • np.dot
    • 注意:二者都是矩阵乘法。 np.matmul中禁止矩阵与标量的乘法。 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值