numpy 数组的计算
一、数组和数的计算
数组和数计算,数组中的每个元素和数进行计算
1、加
import numpy as np arr1 = np.arange(12).reshape(3, 4) print(arr1) # 数组的每个元素和数进行加法运算 arr2 = arr1 + 2 print(arr2)
2、减
import numpy as np arr1 = np.arange(12).reshape(3, 4) # 数组的每个元素和数进行减法运算 arr2 = arr1 - 2 print(arr2)
3、乘
import numpy as np arr1 = np.arange(12).reshape(3, 4) # 数组的每个元素和数进行乘法运算 arr2 = arr1 * 2 print(arr2)
4、除
import numpy as np arr1 = np.arange(12).reshape(3, 4) # 数组的每个元素和数进行除法运算 arr2 = arr1 // 2 print(arr2)
注意:
nan: a/b, a和b都是0
inf: a/b, b是0,a非0
二、数组和数组的计算
1、数组的形状相同
a、加
import numpy as np arr1 = np.arange(12).reshape(3, 4) arr2 = np.arange(24, 36).reshape(3, 4) # 数组中对应位置的元素分别相加 arr3 = arr1 + arr2 print(arr3)
b、减
import numpy as np arr1 = np.arange(12).reshape(3, 4) arr2 = np.arange(24, 36).reshape(3, 4) # 数组中对应位置的元素分别相减 arr3 = arr1 - arr2 print(arr3)
c、乘
import numpy as np arr1 = np.arange(12).reshape(3, 4) arr2 = np.arange(24, 36).reshape(3, 4) # 数组中对应位置的元素分别相乘 arr3 = arr1 * arr2 print(arr3)
d、除
import numpy as np arr1 = np.arange(12).reshape(3, 4) arr2 = np.arange(24, 36).reshape(3, 4) # 数组中对应位置的元素分别相除 arr3 = arr1 / arr2 print(arr3) print(arr3.dtype) # 数组中的每个元素保留两位小数 arr4 = np.round(arr3, 2) print(arr4)
2、数组的形状不相同
a、列数相同
import numpy as np arr1 = np.arange(12, 24).reshape(3, 4) arr2 = np.arange(3, 7).reshape(4,) # 加 arr3 = arr1 + arr2 print(arr3) # 减 arr4 = arr2 - arr1 print(arr4) # 乘 arr5 = arr1 * arr2 print(arr5) # 除 arr6 = arr1 / arr2 print(arr6)
b、行数相同
import numpy as np arr1 = np.arange(12, 24).reshape(3, 4) arr2 = np.arange(3, 6).reshape(3, 1) # 加 arr3 = arr1 + arr2 print(arr3) # 减 arr4 = arr2 - arr1 print(arr4) # 乘 arr5 = arr1 * arr2 print(arr5) # 除 arr6 = arr1 / arr2 print(arr6)
注意:数组的计算遵循numpy的广播原则
三、广播原则
1、官方概念
如果两个数组的后缘维度(从末尾开始计算的维度)的轴长度相符或其中一方的长度为1,则认为它们是广播兼职的。
广播会在缺失和(或)长度为1的维度上进行。
2、自己理解
a.数组求shape
b.从shape的最后一位开始比较
c.1可以看成任意数, 如(2, 2, 3)和(2, 1) 可以进行运算
d.缺失的部分忽略,如(2, 2, 3)和(3,) 可以进行运算
e.运算在缺失或长度为1的维度上进行
四、轴
1.轴: 在numpy中可以理解为方向,使用0,1,2...数字表示 数组shape的index, 0轴 1轴 2.轴长度: 包含数据的条数 数组shape的值