Python数据科学快速入门系列 | 04Numpy四则运算矩阵运算和广播机制的爱恨情仇
Posted 机器未来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python数据科学快速入门系列 | 04Numpy四则运算矩阵运算和广播机制的爱恨情仇相关的知识,希望对你有一定的参考价值。
这是机器未来的第43篇文章
原文首发地址:https://blog.csdn.net/RobotFutures/article/details/126493989
文章目录
1. 概述
本文总结了numpy常见的运算,四则运算与矩阵运算,以及它们的区别。同时描述了在形状不满足要求时,在特定情况下仍然可以运算的广播机制。
2. 四则运算
四则运算即是小学时学过的+、-、*、/,在numpy中ndarray数组对象怎么进行四则运算呢?
四则运算都是对位运算,数学公式如下:
# 生成2个3*3数组
import numpy as np
a = np.random.randint(low=1,high=100,size=(3,3))
b = np.random.randint(low=1,high=100,size=(3,3))
print(f"a:\\na, type:type(a)")
print(f"b:\\nb")
a:
[[84 16 27]
[39 33 87]
[82 16 37]], type:<class 'numpy.ndarray'>
b:
[[68 33 96]
[92 43 69]
[14 4 88]]
2.1 加法
s u m = ∑ i , j M , N ( a i j + b i j ) sum = \\sum_i, j^M,N(a_ij+b_ij) sum=i,j∑M,N(aij+bij)
# 加法
sum = a + b
print(f"sum:\\nsum")
sum:
[[128 154 172]
[ 79 133 16]
[ 96 39 115]]
2.2 减法
d i f f = ∑ i , j M , N ( a i j − b i j ) diff = \\sum_i, j^M,N(a_ij-b_ij) diff=i,j∑M,N(aij−bij)
# 减法
diff = a - b
print(f"diff:\\ndiff")
diff:
[[-30 2 -26]
[ 13 1 -6]
[-18 -3 21]]
2.3 乘法
p r o d u c t = ∑ i , j M , N ( a i j ∗ b i j ) product = \\sum_i, j^M,N(a_ij*b_ij) product=i,j∑M,N(aij∗bij)
# 乘法
product = a * b
print(f"product:\\nproduct")
product:
[[3871 5928 7227]
[1518 4422 55]
[2223 378 3196]]
2.4 除法
q u o t i e n t = ∑ i , j M , N ( a i j / b i j ) quotient = \\sum_i, j^M,N(a_ij/b_ij) quotient=i,j∑M,N(aij/bij)
# 除法
quotient = a / b
print(f"quotient:\\nquotient")
quotient:
[[0.62025316 1.02631579 0.73737374]
[1.39393939 1.01515152 0.45454545]
[0.68421053 0.85714286 1.44680851]]
3. 矩阵运算
上面描述了ndarray数组对象的四则运算,如何利用numpy进行矩阵运算呢?
矩阵运算基本运算为加、减、乘法及数乘。
矩阵的加法、减法运算和数组的加法、减法运算一样,都是对位运算,数乘运算也比较简单,就是每个元素都乘以数,但是矩阵乘法和数组的乘法差距较大。
假设有两个矩阵, MxN矩阵A和NxS矩阵B, 两个矩阵矩阵相乘后结果为MxS矩阵。
矩阵A的列和矩阵B的行必须相等,才可以进行矩阵运算。
假设矩阵A为4*3的矩阵,矩阵B为3*2的矩阵
矩阵A:
[
a
0
,
0
a
0
,
1
a
0
,
2
a
1
,
0
a
1
,
1
a
1
,
2
a
2
,
0
a
2
,
1
a
2
,
2
a
3
,
0
a
3
,
1
a
3
,
2
]
\\beginbmatrix a_0,0 & a_0,1 & a_0,2 \\\\ a_1,0 & a_1,1 & a_1,2 \\\\ a_2,0 & a_2,1 & a_2,2 \\\\ a_3,0 & a_3,1 & a_3,2 \\endbmatrix
⎣
⎡a0,0a1,0a2,0a3,0a0,1a1,1a2,1a3,1a0,2a1,2a2,2a3,2⎦
⎤
矩阵B:
[
b
0
,
0
b
0
,
1
b
1
,
0
b
1
,
1
b
2
,
0
b
2
,
1
]
\\beginbmatrix b_0,0 & b_0,1 \\\\ b_1,0 & b_1,1 \\\\ b_2,0 & b_2,1 \\\\ \\endbmatrix
⎣
⎡b0,0b1,0b2,0b0,1b1,1b2,1⎦
⎤
矩阵A乘以矩阵B的结果4*2的矩阵: 以上是关于Python数据科学快速入门系列 | 04Numpy四则运算矩阵运算和广播机制的爱恨情仇的主要内容,如果未能解决你的问题,请参考以下文章 Python数据科学快速入门系列 | 08类别比较图表应用总结 Python数据科学快速入门系列 | 09Matplotlib数据关系图表应用总结 Python数据科学快速入门系列 | 10Matplotlib数据分布图表应用总结 猿创征文|Python数据科学快速入门系列 | 05常用科学计算函数
[
a
0
,
0
∗
b
0
,
0
+
a
0
,
1
∗
b
1
,
0
+
a
0
,
2
∗
b
2
,
0
a
0
,
0
∗
b
0
,
1
+
a
0
,
1
∗
b
1
,
1
+
a
0
,
2
∗
b
2
,
1
a
1
,
0
∗
b
0
,
0
+
a
1
,
1
∗
b
1
,
0
+
a
1
,
2
∗
b
2
,
0
a
1
,
0
∗
b
0
,
1
+
a
1
,
1
∗
b
1
,
1
+
a
1
,
2
∗
b
2
,
1
a
2
,
0
∗
b
0
,
0
+
a
2
,
1
∗
b
1
,
0
+
a
2
,
2
∗
b
2
,
0
a
2
,
0
∗
b
0
,
1
+
a
2
,
1
∗
b
1
,
1
+
a
2
,
2
∗
b
2
,
1
a
3
,
0
∗
b
0
,
0
+
a
3
,
1
∗
b
1
,
0