numpy的通用函数
2019-08-21 20:29
2021 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Sahar_/article/details/99994594
4、通用函数(ufunc)
4.1 一元计算函数
import numpy as np arr1 = np.random.uniform(-5,10,(3,4)) print(arr1) print('向上取整') print(np.ceil(arr1)) print('向下取整') print(np.floor(arr1)) print('四舍五入') print(np.rint(arr1)) print('取绝对值') print(np.abs(arr1)) print('取相反数') print(np.negative(arr1)) print(np.negative(-1)) print('平方') print(np.square(arr1)) print('取绝对值之后平方根') print(np.sqrt(np.abs(arr1))) print('分成小数与整数部分') print(np.modf(arr1)[0]) print(np.modf(arr1)[1]) print('判断是否是空值') print(np.isnan(arr1)) 展示: [[ 7.40388163 -2.16076085 5.71059497 -1.54591523] [ 6.95716697 1.92224912 1.35926832 -0.45224724] [-3.12226763 -1.88739917 -4.73912872 -4.80680889]] 向上取整 [[ 8. -2. 6. -1.] [ 7. 2. 2. -0.] [-3. -1. -4. -4.]] 向下取整 [[ 7. -3. 5. -2.] [ 6. 1. 1. -1.] [-4. -2. -5. -5.]] 四舍五入 [[ 7. -2. 6. -2.] [ 7. 2. 1. -0.] [-3. -2. -5. -5.]] 取绝对值 [[7.40388163 2.16076085 5.71059497 1.54591523] [6.95716697 1.92224912 1.35926832 0.45224724] [3.12226763 1.88739917 4.73912872 4.80680889]] 取相反数 [[-7.40388163 2.16076085 -5.71059497 1.54591523] [-6.95716697 -1.92224912 -1.35926832 0.45224724] [ 3.12226763 1.88739917 4.73912872 4.80680889]] 1 平方 [[54.81746326 4.66888743 32.61089487 2.38985389] [48.4021722 3.69504166 1.84761035 0.20452756] [ 9.74855517 3.56227562 22.45934099 23.10541167]] 取绝对值之后平方根 [[2.72100747 1.46995267 2.38968512 1.24334839] [2.63764421 1.38645199 1.16587663 0.6724933 ] [1.76699395 1.37382647 2.176954 2.19244359]] 分成小数与整数部分 [[ 0.40388163 -0.16076085 0.71059497 -0.54591523] [ 0.95716697 0.92224912 0.35926832 -0.45224724] [-0.12226763 -0.88739917 -0.73912872 -0.80680889]] [[ 7. -2. 5. -1.] [ 6. 1. 1. -0.] [-3. -1. -4. -4.]] 判断是否是空值 [[False False False False] [False False False False] [False False False False]] 注意点: isnan这个函数,一般配合条件索引
4.2 二元计算函数
arr1 = np.arange(10).reshape((2,5)) arr2 = np.arange(10,20).reshape((2,5)) print('arr1',arr1) print('arr2',arr2) print('两个数组之间的相加操作') print(np.add(arr1,arr2)) print('两个数组之间的相减') print(np.subtract(arr1,arr2)) print('两个数组之间的相除') print(np.divide(arr1,arr2)) print(np.floor_divide(arr1,arr2)) # 取整 print(np.mod(arr1,arr2)) # 取余 print('元素相乘') print(np.multiply(arr1,arr2)) 展示: arr1 [[0 1 2 3 4] [5 6 7 8 9]] arr2 [[10 11 12 13 14] [15 16 17 18 19]] 两个数组之间的相加操作 [[10 12 14 16 18] [20 22 24 26 28]] 两个数组之间的相减 [[-10 -10 -10 -10 -10] [-10 -10 -10 -10 -10]] 两个数组之间的相除 [[0. 0.09090909 0.16666667 0.23076923 0.28571429] [0.33333333 0.375 0.41176471 0.44444444 0.47368421]] [[0 0 0 0 0] [0 0 0 0 0]] [[0 1 2 3 4] [5 6 7 8 9]] 元素相乘 [[ 0 11 24 39 56] [ 75 96 119 144 171]]
4.3 三元计算函数
arr1 = np.arange(10).reshape((2, 5)) arr2 = np.arange(10, 20).reshape((2, 5)) print('arr1', arr1) print('arr2', arr2) # print(np.where(arr1%2==0)) print(np.where(arr1 % 2 == 0, arr1, 100)) print('#############') print(np.where(arr1 > arr2, arr1, arr2)) print('$$$$$$$$$$$$') list1 = arr1.tolist() list2 = arr2.tolist() print([x if x>y else y for x,y in zip(list1,list2)]) arr3 = np.random.uniform(10,50,(3,4)) print(arr3) # 四舍五入之后大于20小于30的数字,修改为100 print(np.where((np.rint(arr3)>20) & (np.rint(arr3)<30),100,arr3)) # 判断是否有空值,是空值就默认为0,不是空值输出原始 print(np.where(np.isnan(arr3),0,arr3)) 展示: arr1 [[0 1 2 3 4] [5 6 7 8 9]] arr2 [[10 11 12 13 14] [15 16 17 18 19]] [[ 0 100 2 100 4] [100 6 100 8 100]] ############# [[10 11 12 13 14] [15 16 17 18 19]] $$$$$$$$$$$$ [[10, 11, 12, 13, 14], [15, 16, 17, 18, 19]] [[42.1366265 25.04062239 13.17674991 34.65152513] [16.06540995 30.29572491 41.49376874 42.42785617] [30.78561853 41.58242411 13.1441147 33.74916931]] [[ 42.1366265 100. 13.17674991 34.65152513] [ 16.06540995 30.29572491 41.49376874 42.42785617] [ 30.78561853 41.58242411 13.1441147 33.74916931]] [[42.1366265 25.04062239 13.17674991 34.65152513] [16.06540995 30.29572491 41.49376874 42.42785617] [30.78561853 41.58242411 13.1441147 33.74916931]]
4.4 常用的元素统计函数
axis是指按照指定轴计算,0代表的是列,1代表的是行 arr1 = np.arange(1,50).reshape((7,7)) print(arr1) print('#######') print(np.mean(arr1,axis=1)) # 求每行元素的平均值 print(np.mean(arr1,axis=0)) # 求每列元素的平均值 print(np.mean(arr1)) # 求所有元素的平均值 print('########') print(np.sum(arr1)) # 求所有元素的总和 print(np.max(arr1)) # 最大值 print(np.min(arr1)) # 最小值 print(np.std(arr1)) # 标准差 print(np.var(arr1)) # 方差 print(np.argmax(arr1)) # 最大值的下标索引 print(np.argmax(arr1,axis=0)) # 每列最大值的下标索引 print(np.argmin(arr1)) # 最小值的下标索引 print(np.cumsum(arr1)) # 所有元素都是之前元素的累加结果,一维数组 print(np.cumprod(arr1)) # 所有元素都是之前元素的累乘结果,一维数组 展示: [[ 1 2 3 4 5 6 7] [ 8 9 10 11 12 13 14] [15 16 17 18 19 20 21] [22 23 24 25 26 27 28] [29 30 31 32 33 34 35] [36 37 38 39 40 41 42] [43 44 45 46 47 48 49]] ####### [ 4. 11. 18. 25. 32. 39. 46.] [22. 23. 24. 25. 26. 27. 28.] 25.0 ######## 1225 49 1 14.142135623730951 200.0 48 [6 6 6 6 6 6 6] 0 [ 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190 210 231 253 276 300 325 351 378 406 435 465 496 528 561 595 630 666 703 741 780 820 861 903 946 990 1035 1081 1128 1176 1225] [ 1 2 6 24 120 720 5040 40320 362880 3628800 39916800 479001600 1932053504 1278945280 2004310016 2004189184 -288522240 -898433024 109641728 -2102132736 -1195114496 -522715136 862453760 -775946240 2076180480 -1853882368 1484783616 -1375731712 -1241513984 1409286144 738197504 -2147483648 -2147483648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
4.5 判断函数
arr1 = np.random.randint(0,50,(4,4)) print(arr1) # 判断所有元素是否都大于0,小于20,是返回True,不是返回Flase print(np.all((arr1>0) & (arr1<20))) # 判断所有元素是否都大于0,小于100,是返回True,不是返回Flase print(np.all((arr1>0) & (arr1<100))) # 判断每列元素是否大于10 print(np.all(arr1>10,axis=0)) # 判断每列是否存在小于10的元素,存在返回True,不存在返回Flase print(np.any(arr1<10,axis=0)) 展示: [[49 45 24 11] [23 8 30 5] [48 21 43 14] [ 8 33 38 2]] False True [False False True False] [ True True False True] 注意点: 1、返回的是布尔值 2、all需要元素全部符合,any至少一位满足 3、axis指定轴
相关文章推荐
- python-Web-django-商城-session存入数据库
- Python剑指offer:数组中数值和下标相等的元素
- python-Web-django-后台
- python-Web-django-图表统计
- Day06 python进程与线程
- 向 Excel 说再见,神级编辑器统一表格与 Python
- Python Day 06
- 剑指Offer刷题Python
- python-Web-数据库-mysql
- DAY3:Python基本数据类型,time库
- python day06
- 实现Kubernetes Operator的新方式:Python
- 解决python3 requests headers参数不能有中文的问题
- Python Open 函数
- 学习Python的第六天
- Python Day06
- python通过robert、sobel、Laplace算子实现图像边缘提取详解
- python Fighting!Fighting!Fighting! day04面向对象编程基础and进阶
- python day05 没有上帝和我懂得注释,请见谅!!!代码规范、装饰器、进程and线程(1)
- python3读取csv文件内容报错:ValueError: binary mode doesn't take an encoding argument 原因!