统计超过某值的个数python numpy统计大于某个数的总数

您所在的位置:网站首页 python统计大于某个数的总数 统计超过某值的个数python numpy统计大于某个数的总数

统计超过某值的个数python numpy统计大于某个数的总数

2024-06-23 17:53| 来源: 网络整理| 查看: 265

首先为啥要学numpy呢?空口无凭,看个小练习

假如有一个列表,里面有n个值,取出列表大于某个数的值

import numpy as np import random # 假如取出其中大于60的值 a = [random.randint(1, 100) for i in range(50)] # print(a) # 学python第一天 new_list = [] for i in a: if i > 60: new_list.append(i) print(new_list) # 学了匿名函数后 c = list(filter(lambda x: x > 60, a)) print(c) # 学了numpy后 d = np.array(a) print(d[d > 60]) [68, 69, 77, 69, 61, 77, 95, 96, 73, 88, 98, 74, 88, 98, 92, 63] [68, 69, 77, 69, 61, 77, 95, 96, 73, 88, 98, 74, 88, 98, 92, 63] [68 69 77 69 61 77 95 96 73 88 98 74 88 98 92 63]

显而易见,使用numpy之后要简单的多!即numpy将许多批量操作变得更简单,更高效!!!

一,安装环境

numpy属于python中的第三方库,需要在Windows的dos窗口或pycharm下面的Terminal中输入如下命令进行安装

pip install numpy二,创建array

1,导入numpy包

import numpy as np import random

2,创建array

a = [random.randint(10, 30) for i in range(10)] b = np.array(a) # 创建数组 print(b) print(type(a), type(b) [25 22 28 10 21 12 22 29 20 11] a = np.array([1, 2, 3, 4, 5]) print(a) b = np.array(range(10)) print(b) [1 2 3 4 5] [0 1 2 3 4 5 6 7 8 9]

3,创建多维数组

①创建二维数组

a = np.array([[1, 2, 3, 4], [6, 7, 8, 9]]) print(a) [[1 2 3 4] [6 7 8 9]]a = np.arange(5, 20).reshape((3, 5)) print(a) [[ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19]]

②创建三维数组

a = np.array([[[1, 2, 3, 4], [6, 7, 8, 9]], [[2, 4, 5, 6], [3, 4, 5, 6]]]) print(a) [[[1 2 3 4] [6 7 8 9]] [[2 4 5 6] [3 4 5 6]]]a = np.arange(5, 17).reshape((2, 3, 2)) print(a) [[[ 5 6] [ 7 8] [ 9 10]] [[11 12] [13 14] [15 16]]]

4,创建全0数组

print(np.array([0] * 10)) a = np.zeros(10) # 默认是float b = np.zeros(10, dtype=int) # 转换为int print(a) print(b) [0 0 0 0 0 0 0 0 0 0] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0 0 0 0 0 0 0 0 0 0]

5,创建全1数组

print(np.ones(10)) # 默认是小数 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]

6,创建空数组

print(np.empty(10)) # 创建空数组,以前内存中留下的值,没有意义 [6.23042070e-307 4.67296746e-307 1.69121096e-306 3.11523921e-307 7.56599128e-307 1.37961913e-306 8.01097889e-307 1.78019082e-306 1.78020984e-306 1.60218627e-306]

7,创建单位矩阵

print(np.eye(5)) [[1. 0. 0. 0. 0.] [0. 1. 0. 0. 0.] [0. 0. 1. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 0. 0. 1.]]

8, 其他一些

①求数组长度

b = np.array(range(20)) print(b.size) 20

print(np.linspace(1, 13, 10)) # 将1~13平均分为10份 [ 1. 2.33333333 3.66666667 5. 6.33333333 7.66666667 9. 10.33333333 11.66666667 13. ]

print(np.arange(10)) # 和range用法基本类似,唯一的区别是arange第三个参数可以用小数 print(np.arange(1, 10, 0.5)) [0 1 2 3 4 5 6 7 8 9] [1. 1.5 2. 2.5 3. 3.5 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5]三,array的批量运算

1,

b = [random.randint(0, 100) for n in range(10)] c = np.array(b) print(c) print(c + 1) print(c / 3) [72 50 91 95 35 63 66 65 53 15] [73 51 92 96 36 64 67 66 54 16] [24. 16.66666667 30.33333333 31.66666667 11.66666667 21. 22. 21.66666667 17.66666667 5. ]

2,

a = np.arange(10) b = np.arange(5, 15) print(a, b) print(a + b) print(b / a) print(a > b) print(a > 5) print(a**0.5) [0 1 2 3 4 5 6 7 8 9] [ 5 6 7 8 9 10 11 12 13 14] [ 5 7 9 11 13 15 17 19 21 23] G:/untitled/data_habding/numpy_study/day1/study2.py:76: RuntimeWarning: divide by zero encountered in true_divide print(b / a) # [ inf 6. 3.5 2.66666667 2.25 2. [ inf 6. 3.5 2.66666667 2.25 2. 1.83333333 1.71428571 1.625 1.55555556] # inf(infinity即无穷) 比任何浮点数都大 [False False False False False False False False False False] [False False False False False False True True True True] [0. 1. 1.41421356 1.73205081 2. 2.23606798 2.44948974 2.64575131 2.82842712 3. ]四,array的索引

1,

a = np.arange(5, 16) print(a) # [ 5 6 7 8 9 10 11 12 13 14 15] print(a[0]) # 5

2,

a = np.arange(15).reshape((3, 5)) # 快速创建3行5列的二维数组 print(a) # [[ 0 1 2 3 4] # [ 5 6 7 8 9] # [10 11 12 13 14]] print(a[0][0]) # 0 列表式写法 print(a[0, 0]) # 0 推荐(新式写法) print(a[1, 2]) # 7

3,布尔索引

a = np.arange(5) print(a) b = a[[True, False, True, False, False]] print(b) # [0 2]

4,花式索引

a = np.arange(5, 20).reshape((3, 5)) print(a) # [[ 5 6 7 8 9] # [10 11 12 13 14] # [15 16 17 18 19]] print(a[0, a[0] > 6]) # [7 8 9] print(a[[0, 2], :][:, [1, 3]]) # [[ 6 8] # [16 18]]五,array的切片

1,

a = np.arange(5, 15) # [ 5 6 7 8 9 10 11 12 13 14] print(a[: 3]) # [5 6 7] print(a[-5:]) # [10 11 12 13 14]

2,

a = np.arange(5, 20).reshape((3, 5)) # [[ 5 6 7 8 9] # [10 11 12 13 14] # [15 16 17 18 19]] print(a[:, 1]) # [ 6 11 16] print(a[: 2, 1: 3]) # [[ 6 7] # [11 12]] print(a[1:, 3:]) # [[13 14] # [18 19]]

3,数组和列表的一个小区别

a = list(range(5, 15)) print(a) b = np.arange(5, 15) print(b) c = a[: 5] d = b[: 5] c[0] = 20 # [5, 6, 7, 8, 9, 10, 11, 12, 13, 14] d[0] = 20 # [20 6 7 8 9 10 11 12 13 14] print(a) print(b)

总结:数组中修改其切片中的元素,数组中也会被修改,但是列表不会

六,numpy中通用函数

1,abs取绝对值

a = np.arange(-20, 5) print(np.abs(a)) [20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 2 3 4]

2,sqrt开方

a = np.arange(-20, 5) print(np.sqrt(a)) [ nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan 0. 1. 1.41421356 1.73205081 2. ]

注:nan(即not a number)不是一个数 不等于任何浮点数(nan != nan)

3,round

①原python中

import math print(round(3.4)) # 四舍五入取整 3 print(int(1.9)) # 直接扔掉小数位 1 print(math.floor(1.8)) # 向下取整 1 print(math.floor(-1.8)) # 向下取整 -2 print(math.ceil(1.1)) # 向上取整 2 print(math.ceil(-1.6)) # 向上取整 -1

②numpy中

a = np.arange(-5.5, 5) print(a) print(np.round(a)) # [-6. -4. -4. -2. -2. -0. 0. 2. 2. 4. 4.] print(np.trunc(a)) # [-5. -4. -3. -2. -1. -0. 0. 1. 2. 3. 4.] print(np.floor(a)) # [-6. -5. -4. -3. -2. -1. 0. 1. 2. 3. 4.] print(np.ceil(a)) # [-5. -4. -3. -2. -1. -0. 1. 2. 3. 4. 5.]

a = np.linspace(1, 5, 10) print(a) print(np.round(a, 2)) # 取两位小数 [1. 1.44444444 1.88888889 2.33333333 2.77777778 3.22222222 3.66666667 4.11111111 4.55555556 5. ] [1. 1.44 1.89 2.33 2.78 3.22 3.67 4.11 4.56 5. ]

4,modf 剥离小数位和整数位

a = np.arange(-5.5, 5.5) print(a) print(np.modf(a)) # (array([-0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, 0.5]), # array([-5., -4., -3., -2., -1., -0., 0., 1., 2., 3., 4.]))

5,两个特殊的浮点数

①nan

# nan(nan即not a number)不是一个数 不等于任何浮点数(nan != nan) print(float('nan')) # nan a = np.arange(0, 5) print(a / a) # [nan 1. 1. 1. 1.] print(np.nan) # 创建nan print(np.nan == np.nan) # False

如何判断数据里有没有nan

a = np.array([0, 3, 6, 8, 0]) b = a / a print(np.isnan(b)) # 判断数据里面有没有nan [ True False False False True] print(b[~np.isnan(b)]) # [1. 1. 1.] 去掉里面的nan

②inf

# inf(infinity即无穷) 比任何浮点数都大 print(float('inf')) # inf

如何判断数据里有没有inf

a = np.array([3, 4, 6, 9]) # [inf 1. inf 4.5] 表示无穷大 b = np.array([0, 4, 0, 2]) c = a / b print(np.inf == np.inf) # True print(c[~np.isinf(c)]) # [1. 4.5] 去掉里面的inf print(c[c!=np.inf]) # [1. 4.5] 去掉里面的inf

6,maximum 返回两个数组中一一对应位置上最大的一个值

a = np.array([3, 5, 6, 8]) b = np.array([5, 8, 2, 1]) print(np.maximum(a, b)) # [5 8 6 8]

7,minimum 返回两个数组中一一对应位置上最小的一个值

a = np.array([3, 5, 6, 8]) b = np.array([5, 8, 2, 1]) print(np.minimum(a, b)) # [3 5 2 1]七,数学和统计方法

1,sum()求和

a = np.array([3, 5, 6, 8]) print(a.sum()) # 22

2,mean()求平均值

a = np.array([3, 5, 6, 8]) print(a.mean()) # 5.5

3,var()求方差(整组数据的离散程度)

a = np.array([3, 5, 6, 8]) print(a.var()) # 3.25

4,std()求标准差(方差开方)

a = np.array([3, 5, 6, 8]) print(a.std()) # 1.8027756377319946

5,max() min()求最大值,最小值

a = np.array([3, 5, 6, 8]) print(a.max()) # 8 print(a.min()) # 3

6,argmax() argmin() 求最大数下标,最小数下表

a = np.arange(-10, 10) print(a.argmax()) # 19 print(a.argmin()) # 0八,随机生成数

1,random库中的用法

print(random.random()) # 返回[0, 1)的随机浮点数 print(random.randint(1, 10)) # 返回[1.10]的随机整数 print(random.choice(list(range(3, 10)))) # 从所给列表中随机选一个元素返回 a = list(range(5, 15)) random.shuffle(a) # 打乱列表 print(a) print(random.uniform(1, 10)) # [1,10]随机返回一个浮点数

2,numpy中的用法

print(np.random.randint(0, 10)) # 8 print(np.random.randint(0, 10, 10)) # [0 1 5 8 4 7 3 6 8 6] print(np.random.randint(0, 10, (3, 5))) # [[2 9 2 3 6] # [9 2 8 4 1] # [5 3 1 6 5]] print(np.random.random(10)) # [0.33031099 0.35918637 0.65868327 0.74442108 0.71771834 0.74782961 # 0.15125635 0.17983218 0.37393755 0.77529924] print(np.random.random()) # 0.7375970998290451 print(np.random.rand()) # 0.4410851788926652 print(np.random.rand(10)) # [0.14405128 0.0463478 0.97758344 0.03100739 0.94210667 0.70551171 # 0.91935786 0.43250767 0.78710345 0.78756913] print(np.random.randint(1, 19)) # 16 print(np.random.randint(1, 19, 10)) # [ 7 15 17 12 18 14 13 15 5 16] print(np.random.choice(np.arange(1, 10))) # 随机选一个 a = np.arange(3, 13) np.random.shuffle(a) # 随机打乱顺序 print(a) print(np.random.uniform(1, 10)) # 随机返回一个浮点数 print(np.random.uniform(1, 10, 10)) # 随机返回十个浮点数



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3