munpy 数组间运算
数组间运算
1.数组与数的运算
arr = np.array([[1,2,3,2,1,4],[5,6,1,2,3,1]])
arr + 1#每个元素分别+1
"""
array([[2, 3, 4, 3, 2, 5],
[6, 7, 2, 3, 4, 2]])
"""
arr/2#每个元素分别除2
"""
array([[0.5, 1. , 1.5, 1. , 0.5, 2. ],
[2.5, 3. , 0.5, 1. , 1.5, 0.5]])
"""
2.数组与数组的运算
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]])
arr1 + arr2
#上述代码无法运行
-
数组在进行矢量化运算时,要求数组的形状是相等的。当形状不相等的数组执行算术运算的时候,就会出现广播机制,该机制会对数组进行扩展,是数组的shape属性值一样,这样,就可以进行矢量化运算了。
-
广播机制实现了两个或两个以上数组的运算,即使这些数组的shape不是完全相同的,只需要满足如下任意一个条件即可:
- 1.数组的某一维度等长
- 其中一个数组的某一维度为1
-
广播机制需要扩展维度小的数组,使得它与维度最大的数组的shape值相同,以便使用元素级函数或者运算符进行运算
- 同时也方便计算,要不然你怎么分啊
arr1 = np.array([[0],[1],[2],[3]])
arr1.shape#(4, 1),4行1列
arr2 = np.array([1,2,3])#一维数组,1行3列
arr2.shape
arr1 + arr2
"""
输出结果:
array([[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])
"""
记录学习的点点滴滴