Numpy函数(20190806)
Posted bltstop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Numpy函数(20190806)相关的知识,希望对你有一定的参考价值。
申明:博客纯属个人学习记录,不做任何其他用途,学习内容来源于:https://www.runoob.com/?s=numpy。
本节内容:
- numpy 数学函数
- numpy算数函数
- numpy统计函数
- numpy排序、条件筛选函数
1、Numpy数学函数
- 三角函数
- 舍入函数
1.1 三角函数、反三角函数、角度化弧度、弧度化角度
import numpy as np
a = np.array([0,30,45,60,90])
#角度转化为弧度再计算正弦值
b = np.sin(a*np.pi/180) # 角度 转化为弧度
print (‘不同角度的正弦值:‘)
print(b)
print("\\n")
f = np.arcsin(b) #弧度值
print(f)
f2 = np.degrees(f) #弧度转角度
print(f2)
1.2 舍入函数
numpy.around()
函数返回指定数字的四舍五入值。
numpy.around(a,decimals)
参数说明:
- a: 数组
- decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
numpy.floor()
返回数字的下舍整数。
坐标值上该点的左面的整数
numpy.ceil()
numpy.ceil() 返回数字的上入整数。
坐标值上该点的右面的整数
2、Numpy算数函数
NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply() 和 divide()以及倒数reciprocal()、幂power()、取余mod()等
需要注意的是数组必须具有相同的形状或符合数组广播规则。
numpy.power()
import numpy as np
a = np.array([10,100,1000])
print (‘我们的数组是;‘)
print (a)
print (‘\\n‘)
print (‘调用 power 函数:‘)
print (np.power(a,2))
print (‘\\n‘)
print (‘第二个数组:‘)
b = np.array([1,2,3])
print (b)
print (‘\\n‘)
print (‘再次调用 power 函数:‘)
print (np.power(a,b)) #对应位置元素的次方
结果:
numpy.mod()
numpy.mod() 计算输入数组中相应元素的相除后的余数。 函数 numpy.remainder() 也产生相同的结果。
参数同power()函数,可以是一个数,也可以一个数组,是数组的话,也是对应位的元素做运算。
3、统计函数
- numpy.amin() 最小值
- numpy.amax() 最大值
- numpy.ptp() 最大值与最小值之差
- numpy.percentile() 百分位数
- numpy.median() 中位数(中值)
- numpy.mean() 算数平均值
- numpy.average() 平均值
- numpy.std() 标准差
- numpy.var() 方差
3.1 numpy.amin() 和 numpy.amax()
numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
numpy.amax() 用于计算数组中的元素沿指定轴的最大值。
import numpy as np a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]]) print(‘我们的数组是:‘) print(a) print(‘\\n‘) print(‘调用 amin() 函数:‘) print(np.amin(a, 1)) #指定轴,每一行的最小值 print(‘\\n‘) print(np.amin(a)) #也可以不指定,整个数组中的最小值
结果:
3.2 numpy.ptp()
numpy.ptp()函数计算数组中元素最大值与最小值的差(最大值 - 最小值)。
import numpy as np
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print (‘我们的数组是:‘)
print (a)
print (‘\\n‘)
print (‘调用 ptp() 函数:‘)
print (np.ptp(a))
print (‘\\n‘)
print (‘沿轴 1 调用 ptp() 函数:‘)
print (np.ptp(a, axis = 1)) #每一行的最大值与最小值的差,返回的是一个数组。
print (‘\\n‘)
print (‘沿轴 0 调用 ptp() 函数:‘)
print (np.ptp(a, axis = 0))
3.3 numpy.percentile()
百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。 函数numpy.percentile()接受以下参数。
numpy.percentile(a, q, axis)
参数说明:
- a: 输入数组
- q: 要计算的百分位数,在 0 ~ 100 之间
- axis: 沿着它计算百分位数的轴
首先明确百分位数:
第 p 个百分位数是这样一个值,它使得至少有 p% 的数据项小于或等于这个值,且至少有 (100-p)% 的数据项大于或等于这个值。
举个例子:高等院校的入学考试成绩经常以百分位数的形式报告。比如,假设某个考生在入学考试中的语文部分的原始分数为 54 分。相对于参加同一考试的其他学生来说,他的成绩如何并不容易知道。但是如果原始分数54分恰好对应的是第70百分位数,我们就能知道大约70%的学生的考分比他低,而约30%的学生考分比他高。
这里的 p = 70。
4、排序、条件筛选函数
种类 | 速度 | 最坏情况 | 工作空间 | 稳定性 |
---|---|---|---|---|
‘quicksort‘ (快速排序) |
1 | O(n^2) |
0 | 否 |
‘mergesort‘ (归并排序) |
2 | O(n*log(n)) |
~n/2 | 是 |
‘heapsort‘ (堆排序) |
3 | O(n*log(n)) |
0 | 否 |
4.1 numpy.sort()
numpy.sort() 函数返回输入数组的排序副本。函数格式如下:
numpy.sort(a, axis, kind, order)
参数说明:
- a: 要排序的数组
- axis: 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序, axis=0 按列排序,axis=1 按行排序
- kind: 默认为‘quicksort‘(快速排序)
- order: 如果数组包含字段,则是要排序的字段
# 在 sort 函数中排序字段 dt = np.dtype([(‘name‘, ‘S10‘),(‘age‘, int)]) a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt) print (‘我们的数组是:‘) print (a) print (‘\\n‘) print (‘按 name 排序:‘) print (np.sort(a, order = ‘name‘))
结果:
4.2 numpy.argsort()
numpy.argsort() 函数返回的是数组值从小到大的索引值。
import numpy as np x = np.array([3, 1, 2]) print (‘我们的数组是:‘) print (x) print (‘\\n‘) print (‘对 x 调用 argsort() 函数:‘) y = np.argsort(x) print (y) print (‘\\n‘) print (‘以排序后的顺序重构原数组:‘) print (x[y]) print (‘\\n‘) print (‘使用循环重构原数组:‘) for i in y: print (x[i], end=" ")
结果:
我们的数组是: [3 1 2] 对 x 调用 argsort() 函数: [1 2 0] 以排序后的顺序重构原数组: [1 2 3] 使用循环重构原数组 1 2 3
不失为一个快速排序的方法!!!!!
4.3 numpy.lexsort()
numpy.lexsort() 用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。
这里举一个应用场景:小升初考试,重点班录取学生按照总成绩录取。在总成绩相同时,数学成绩高的优先录取,在总成绩和数学成绩都相同时,按照英语成绩录取…… 这里,总成绩排在电子表格的最后一列,数学成绩在倒数第二列,英语成绩在倒数第三列。
4.4 msort、sort_complex、partition、argpartition
函数 | 描述 |
---|---|
msort(a) | 数组按第一个轴排序,返回排序后的数组副本。np.msort(a) 相等于 np.sort(a, axis=0)。 |
sort_complex(a) | 对复数按照先实部后虚部的顺序进行排序。 |
partition(a, kth[, axis, kind, order]) | 指定一个数,对数组进行分区 |
argpartition(a, kth[, axis, kind, order]) | 可以通过关键字 kind 指定算法沿着指定轴对数组进行分区 |
4.5 numpy.argmax() 和 numpy.argmin()
numpy.argmax() 和 numpy.argmin()函数分别沿给定轴返回最大和最小元素的索引。
4.6 numpy.nonzero()
numpy.nonzero() 函数返回输入数组中非零元素的索引。
4.7 numpy.where()
numpy.where() 函数返回输入数组中满足给定条件的元素的索引。
4.8 numpy.extract()
numpy.extract() 函数根据某个条件从数组中抽取元素,返回满条件的元素。
详细内容参考菜鸟教程:https://www.runoob.com/numpy/numpy-sort-search.html
以上是关于Numpy函数(20190806)的主要内容,如果未能解决你的问题,请参考以下文章
python使用numpy中的diagonal函数获取2D numpy数组的对角线元素使用numpy中的diagonal函数和sum函数获取2D numpy数组的迹(matrix trace)
Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组split函数垂直拆分二维numpy数组
python编写自定义lambda函数使用numpy中的np.vectorize函数在numpy数组中的每个元素上施加应用自定义lambda函数生成新的numpy数组
Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组split函数水平(按列)拆分二维numpy数组