np.abs() 元素的绝对值,参数是 number 或 array
np.ceil() 向上取整,参数是 number 或 array
np.floor() 向下取整,参数是 number 或 array
np.isnan() 检测数组元素是否为 NaN(Not a Number,非数值) 的函数
~np.isnan() 取反:找出哪些不是 NaN
np.multiply()逐元素相乘,对应位置相乘。
如果第二个参数传递的是number,原数组中所有元素乘以这个数字,返回新的数组;
如果第二个参数也是一个数组,是将两个数组中对应位置的元素相乘,返回一个新的数组,其形状与输入数组相同。np.divide() 元素相除,参数是 number 或 array
np.where(condition, x, y) 三元运算符,x if condition else y
NumPy 舍入三兄弟:rint / around / round
“四舍六入五成双,”
“点五看偶定去向。”
“偶舍奇入无偏差,”
也叫银行家舍入(Banker’s Rounding)
importnumpyasnp# 2.7 numpy常用函数defbaseFunction01():array1=np.array([[1,-2.8,3.5],[4,-5.1,6.7]])print(array1,array1.dtype)print()# np.abs() 元素的绝对值,参数是 number 或 arrayprint(np.abs(array1))# np.ceil() 向上取整,参数是 number 或 arrayprint("向上取整:\n",np.ceil(array1))# np.floor() 向下取整,参数是 number 或 arrayprint("向下取整\n",np.floor(array1))# np.isnan() 检测数组元素是否为 NaN(Not a Number,非数值) 的函数array3=np.array([1.0,2.0,np.nan,4.0,np.nan,6.0])# 检测哪些是 NaN,空的都是Trueprint(np.isnan(array3))# 输出: [False False True False True False]# 取反:找出哪些不是 NaNprint(~np.isnan(array3))# 输出: [ True True False True False True]defbaseFunction02():array4=np.array([[1,2,3],[4,5,6]])# np.multiply()逐元素相乘,对应位置相乘。# 如果第二个参数传递的是number,原数组中所有元素乘以这个数字,返回新的数组;# 如果第二个参数也是一个数组,是将两个数组中对应位置的元素相乘,返回一个新的数组,其形状与输入数组相同。''' multiply乘法过程:逐元素相乘,对应位置相乘。 [[1, 2, 3], [[1, 2, 3], [[1×1, 2×2, 3×3], [[ 1, 4, 9], [4, 5, 6]] × [4, 5, 6]] = [4×4, 5×5, 6×6]] = [16, 25, 36]] '''print("元素相乘:\n",np.multiply(array4,array4))print("元素相乘写法V2:\n",array4*array4)# np.divide() 元素相除,参数是 number 或 arrayprint("divide元素相除:\n",np.divide(array4,2))# np.where(condition, x, y) 三元运算符,x if condition else yprint("三元运算符:\n",np.where(array4>3,1,0))print("*"*60)defbaseFunction03():# NumPy 舍入三兄弟:rint / around / round# np.rint()/np.around()/np.round() 四舍六入五成双(银行家舍入,只有x.5才会不一样,其他小数都一样)# NumPy 用的是 "四舍六入五成双",也叫银行家舍入(Banker's Rounding)# 为什么要这样设计?传统的"四舍五入"在大量数据中会引入系统性偏差:''' 传统四舍五入: 1.5→2, 2.5→3, 3.5→4, 4.5→5 ... .5 全部进位 → 整体偏高 ↑ 银行家舍入: 1.5→2, 2.5→2, 3.5→4, 4.5→4 ... .5 一半进位一半舍去 → 无偏差 ✓ '''# 代码案例:四舍六入五成双:# # ≤4 舍去# # ≥6 进位# # =5 → 正好为0.5时,看前一位是奇数还是偶数,偶舍奇入array2=np.array([2.3,2.5,3.5,1.4,11.6,7.5])print("四舍六入五成双\n",np.rint(array2))print("*"*60)print("四舍六入五成双,""点五看偶定去向。""偶舍奇入无偏差,""rint/around/round一个样")# 对 0.5, 1.5, 2.5, 3.5 进行四舍六入五成双# 规则:正好为0.5时,看整数部分,偶舍奇入print(np.round([0.5,1.5,2.5,3.5]))# 输出: [0. 2. 2. 4.]# 0.5 -> 0 (0是偶数,舍)# 1.5 -> 2 (1是奇数,入)# 2.5 -> 2 (2是偶数,舍)# 3.5 -> 4 (3是奇数,入)if__name__=="__main__":# baseFunction01()# baseFunction02()# 四舍六入五成双baseFunction03()