前言
一、Numpy的数学运算
二、 Numpy的Broadcast广播功能
一、 Numpy的数学运算
1.NumPy包含大量的各种数学运算。 NumPy提供标准的三角函数,算术运算功能,处理复数 等。
2.NumPy的标量计算功能,常规的代数运算都可以实现。
3.NumPy的矩阵运算特性,支持同尺寸矩阵的各种数学运算。
数学运算的实操案例
import numpy as np
# numpy 的基本标量计算功能
a = np.array([10,20,30,40])
print(a+2) # 一维的标量计算
print(a*2) # 一维的标量计算
print("*"*30)
b = np.array([[10,20,30,40],[11,21,31,41]])
print(b+2) # 二维的标量计算
print(b*2) # 二维的标量计算
矩阵运算实操案例
import numpy as np
# numpy 的矩阵计算功能,规格要求一样
a = np.array([10,20,30,40])
b = np.arange(1,5)
print(a)
print(b)
print(a+b)
二、 Numpy的Broadcast广播功能
1.功能简介
1.术语广播是指numpy在算术运算期间如何处理具有不同维数的数组,这会导致某些约束,较 小的数组将在较大的数组上广播,以使它们具有兼容的形状。
2.广播提供了一种对数组操作进行矢量化的方法,从而使循环在C中发生,而不是在Python中 发生循环,因为我们知道C是在Numpy中实现的。这样做无需复制不必要的数据,从而可以 实现高效的算法实现。
3.在某些情况下,广播是个坏主意,因为广播会导致内存使用效率低下,从而减慢计算速度。
4.如果数组的尺寸不同,则将低尺寸数组的形状添加1s,直到两个形状的长度相同。
5.如果两个数组的尺寸相同,或者其中一个数组的尺寸为1,则两个数组在尺寸上兼容。
6.如果阵列与所有尺寸兼容,则可以一起广播。
7.广播之后,每个数组的行为就好像它们的形状等于两个输入数组的元素方向的最大值一样。
8.在一个数组的大小为1而另一个数组是大于1的任何维度中,第一个数组的行为就像是沿着该 维度复制的一样。
numpy 无法实现广播的情况
import numpy as np
# numpy 无法实现广播的情况
a = np.array([10,20,30,40])
b = np.arange(1,4)
print(a) # 四个元素
print(b) # 三个元素
print(a+b) # 无法相加,因为形状不一样
numpy的广播功能
案例一:
mport numpy as np
# numpy 的广播功能
a = np.array([[1,2],[3,4],[5,6]])
b = np.array([10,20])
print(a)
print(b)
print("*"*30)
print(a+b)
案例二:
import numpy as np
# numpy 实现广播的情况
a = np.array([[1],[2],[3]])
b = np.array([10,20,30])
print(a)
print(b)
print("*"*30)
print(a+b)