张家界做网站的,网站被qq拦截 做301,优化教程网站推广排名,平台建设内容CSDN 课程推荐#xff1a;《Python 数据分析与挖掘》#xff0c;讲师刘顺祥#xff0c;浙江工商大学统计学硕士#xff0c;数据分析师#xff0c;曾担任唯品会大数据部担任数据分析师一职#xff0c;负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…
CSDN 课程推荐《Python 数据分析与挖掘》讲师刘顺祥浙江工商大学统计学硕士数据分析师曾担任唯品会大数据部担任数据分析师一职负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个企业级项目。NumPy 系列文章
Python 数据分析三剑客之 NumPy一理解 NumPy / 数组基础Python 数据分析三剑客之 NumPy二数组索引 / 切片 / 广播 / 拼接 / 分割Python 数据分析三剑客之 NumPy三数组的迭代与位运算Python 数据分析三剑客之 NumPy四字符串函数总结与对比Python 数据分析三剑客之 NumPy五数学 / 算术 / 统计 / 排序 / 条件 / 判断函数合集Python 数据分析三剑客之 NumPy六矩阵 / 线性代数库与 IO 操作 另有 Pandas、Matplotlib 系列文章已更新完毕欢迎关注
Pandas 系列文章https://itrhx.blog.csdn.net/category_9780397.htmlMatplotlib 系列文章https://itrhx.blog.csdn.net/category_9780418.html 推荐学习资料与网站博主参与部分文档翻译
NumPy 官方中文网https://www.numpy.org.cn/Pandas 官方中文网https://www.pypandas.cn/Matplotlib 官方中文网https://www.matplotlib.org.cn/NumPy、Matplotlib、Pandas 速查表https://github.com/TRHX/Python-quick-reference-table 文章目录【1x00】NumPy 函数速查表【2x00】NumPy 数学函数【2x01】sin() / cos() / tan()【2x02】arcsin() / arccos() / arctan()【2x03】around() / rint() / floor() / ceil()【3x00】NumPy 算术函数【3x01】add() / subtract() / multiply() / divide()【3x02】reciprocal() / power() / mod() / remainder()【3x03】absolute() / isnan()【4x00】NumPy 统计函数【4x01】amax() / amin()【4x02】argmax() / argmin()【4x03】sum()【4x04】cumsum() / cumprod()【4x05】ptp()【4x06】percentile()【4x07】median()【4x08】mean()【4x09】average()【4x10】std() / var()【5x00】NumPy 排序函数【5x01】sort()【5x02】msort()【5x03】argsort()【5x04】lexsort()【5x05】sort_complex()【5x06】partition()【5x07】argpartition()【5x08】unique()【6x00】NumPy 条件函数【6x01】nonzero()【6x02】where()【6x03】extract()【7x00】NumPy 判断函数【7x01】any() / all()这里是一段防爬虫文本请读者忽略。
本文原创首发于 CSDN作者 TRHX。
博客首页https://itrhx.blog.csdn.net/
本文链接https://itrhx.blog.csdn.net/article/details/105398131
未经授权禁止转载恶意转载后果自负尊重原创远离剽窃【1x00】NumPy 函数速查表
NumPy 三角函数函数描述sin()正弦函数cos()余弦函数tan()正切函数arcsin()反正弦函数arccos()反余弦函数arctan()反正切函数NumPy 舍入函数函数描述around()将指定数字四舍五入到指定的小数位rint()将指定数字四舍五入到最近的整数floor()返回小于或者等于指定表达式的最大整数即向下取整ceil()返回大于或者等于指定表达式的最小整数即向上取整NumPy 算术函数函数描述add()数组元素加法运算subtract()数组元素减法运算multiply()数组元素乘法运算divide()数组元素除法运算reciprocal()返回数组元素的倒数power()返回数组元素的乘幂mod()返回数组元素的相除后的余数remainder()返回数组元素的相除后的余数NumPy 统计函数函数描述amax()计算数组元素沿指定轴的最大值amin()计算数组元素沿指定轴的最小值argmax()计算数组元素沿指定轴的最大值的索引值argmin()计算数组元素沿指定轴的最小值的索引值sum()计算数组中所有元素的和cumsum()返回一个一维数组每个元素都是之前所有元素的累加和cumprod()返回一个一维数组每个元素都是之前所有元素的累乘积ptp()计算数组元素最大值与最小值的差percentile()计算多维数组的任意百分位数median()计算数组元素的中位数mean()计算数组元素的算术平均值average()计算数组元素的加权平均值std()计算数组元素的标准差var()计算数组元素的方差NumPy 排序函数sort()将原数组元素按照从小到大排序msort()将原数组元素按照第一个轴的从小到大排序argsort()将元素从小到大排列提取对应的索引值并返回lexsort()将多个序列按照从小到大排序返回其索引值sort_complex()对复数数组进行从小到大排序partition()对数组进行分区排序argpartition()对数组进行分区排序返回元素的索引值unique()将数组元素去重后返回从小到大的排序结果NumPy 条件函数nonzero()返回原数组中非零元素的索引值where()返回数组中满足指定条件的元素的索引值extract()返回数组中满足指定条件的元素NumPy 判断函数any()至少有一个元素满足指定条件则返回 True否则返回 Falseall()所有的元素满足指定条件则返回 True否则返回 False
【2x00】NumPy 数学函数
NumPy 数学函数包含三角函数、舍入函数等。
【2x01】sin() / cos() / tan()
numpy.sin()、numpy.cos()、numpy.tan() 分别对应正弦函数、余弦函数、正切函数。
在求三角函数时会先将角度转化成弧度在 NumPy 中的转化公式角度 * numpy.pi/180
应用举例 import numpy as npa np.array([0, 30, 45, 60 ,90])print(np.sin(a*np.pi/180))
[0. 0.5 0.70710678 0.8660254 1. ]print(np.cos(a*np.pi/180))
[1.00000000e00 8.66025404e-01 7.07106781e-01 5.00000000e-01 6.12323400e-17]print(np.tan(a*np.pi/180))
[0.00000000e00 5.77350269e-01 1.00000000e00 1.73205081e00 1.63312394e16]【2x02】arcsin() / arccos() / arctan()
numpy.arcsin()、numpy.arccos()、numpy.arctan() 分别对应反正弦函数、反余弦函数、反正切函数。
在求三角函数时会先将角度转化成弧度在 NumPy 中的转化公式角度 * numpy.pi/180
arcsin、arccos、arctan 接收的参数是三角函数值函数返回给定角度的 sincos 和 tan 的反三角函数如果 sinθx那么 arcsinxθ其他类似这些函数的结果可以通过 numpy.degrees() 函数将弧度转换为角度。 import numpy as npa np.array([0, 30, 45, 60 ,90])a_sin np.sin(a*np.pi/180)a_arcsin np.arcsin(a_sin)print(a_sin) # 角度的正弦值
[0. 0.5 0.70710678 0.8660254 1. ]print(a_arcsin) # 角度的反正弦值返回值的单位为弧度
[0. 0.52359878 0.78539816 1.04719755 1.57079633]print(np.degrees(a_arcsin)) # 弧度转化为角度
[ 0. 30. 45. 60. 90.]【2x03】around() / rint() / floor() / ceil()
1、numpy.around() 函数将指定数字四舍五入到指定的小数位可指定保留的小数位数。
基本语法numpy.around(a[, decimals0, outNone])
参数描述a输入数组decimalsint 类型可选项舍入的小数位数默认值为 0如果为负整数将四舍五入到小数点左侧的位置outndarray 对象可选项放置结果的备用输出数组。它必须具有与预期输出相同的形状但是如有必要将强制转换输出值的类型
应用举例 import numpy as npa np.array([13, 1.4, 6.23, 12.834])print(np.around(a))
[13. 1. 6. 13.]print(np.around(a, decimals1))
[13. 1.4 6.2 12.8]print(np.around(a, decimals-1))
[10. 0. 10. 10.]2、numpy.rint() 函数将指定数字四舍五入到最近的整数不保留小数位。
应用举例 import numpy as npprint(np.rint([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0]))
[-2. -2. -0. 0. 2. 2. 2.]3、numpy.floor() 函数会返回小于或者等于指定表达式的最大整数即向下取整。
应用举例 import numpy as npprint(np.floor([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0]))
[-2. -2. -1. 0. 1. 1. 2.]4、numpy.ceil() 函数会返回大于或者等于指定表达式的最小整数即向上取整。
应用举例 import numpy as npprint(np.ceil([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0]))
[-1. -1. -0. 1. 2. 2. 2.]【3x00】NumPy 算术函数
NumPy 算术函数包含了基本的加减乘除运算、求倒数、幂、余数等。
【3x01】add() / subtract() / multiply() / divide()
add()、subtract()、multiply()、divide() 分别对应 NumPy 中的加减乘除运算。
注意两个数组必须具有相同的形状或符合数组的广播规则才能进行运算。
应用举例 import numpy as npa np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])b np.array([5, 5, 5])print(np.add(a, b))
[[ 5 6 7][ 8 9 10][11 12 13]]print(np.subtract(a, b))
[[-5 -4 -3][-2 -1 0][ 1 2 3]]print(np.multiply(a, b))
[[ 0 5 10][15 20 25][30 35 40]]print(np.divide(a, b))
[[0. 0.2 0.4][0.6 0.8 1. ][1.2 1.4 1.6]]【3x02】reciprocal() / power() / mod() / remainder()
1、numpy.reciprocal() 函数用于返回各数组元素的倒数。
应用举例 import numpy as npprint(np.reciprocal([0.25, 4, 1, 2.10]))
[4. 0.25 1. 0.47619048]2、numpy.power() 函数将第一个数组中的元素作为底数计算它与第二个数组中相应元素的幂。
应用举例 import numpy as npa np.array([5, 10, 100])b np.array([3, 2, 1])print(np.power(a, b))
[125 100 100]print(np.power(a, 2))
[ 25 100 10000]3、numpy.mod() 与 numpy.remainder() 都可以计算数组中相应元素相除后的余数。
应用举例 import numpy as npa np.array([10, 15, 20])b np.array([3, 4, 5])print(np.mod(a, b))
[1 3 0]print(np.remainder(a, b))
[1 3 0]print(np.mod(a, 6))
[4 3 2]print(np.remainder(a, 9))
[1 6 2]【3x03】absolute() / isnan()
1、numpy.absolute() 函数用于计算元素的绝对值。
应用举例 import numpy as npprint(np.absolute([-1.2, 1.2, 13, -10]))
[ 1.2 1.2 13. 10. ]2、numpy.isnan() 函数用于判断元素是否为 NaNNot a Number。
应用举例 import numpy as npnp.isnan(np.nan)
Truenp.isnan(np.inf)
Falseprint(np.isnan([np.nan, 2, 3, np.nan]))
[ True False False True]【4x00】NumPy 统计函数
NumPy 统计函数包含了计算最大值、最小值、最大值与最小值的差、百分位数、中位数、算术平均值、加权平均值、标准差与方差等。
【4x01】amax() / amin()
numpy.amax() 和 numpy.amin() 函数分别用于计算数组中的元素沿指定轴的最大值和最小值。
基本语法
numpy.amax(a[, axisNone, outNone, keepdimsno value, initialno value, whereno value])
numpy.amin(a[, axisNone, outNone, keepdimsno value, initialno value, whereno value])
参数解释
参数描述a待处理的数组对象axis指定轴可选项整数或者整数元组类型outndarray 对象可选项放置结果的备用输出数组必须具有与预期输出数组相同的形状和缓冲区长度keepdimsbool 类型可选项是否保持数组的二维特性initial初始值标量可选项如果设置了标量则除了元素之间的比较外还会和标量进行对比where比较条件通常和 initial 参数一起使用如果当前是 amax 函数where 为 True 时则会比较最大值 Flase 则会比较最小值该参数含义比较模糊参考资料较少准确描述请参考官方文档
应用举例 import numpy as npa np.array([[2, 4], [8, 9]])print(a)
[[2 4][8 9]]print(np.amax(a))
9print(np.amax(a, axis0)) # 元素按行比较
[8 9]print(np.amax(a, axis0, keepdimsTrue)) # 元素按行比较并保持数组的二维特性
[[8 9]]print(np.amax(a, axis1)) # 元素按列比较
[4 9]print(np.amax(a, axis1, initial5)) # 元素按列比较包括标量一起比较
[5 9]【4x02】argmax() / argmin()
numpy.argmax() 和 numpy.argmin() 函数分别沿指定轴返回最大元素和最小元素的索引值。
基本语法numpy.argmax(a[, axisNone, outNone])numpy.argmin(a[, axisNone, outNone])
参数描述a待处理的数组对象axis指定轴可选项整数或者整数元组类型若未指定则在操作前会将数组展开out可选项放置结果的备用输出数组必须具有与预期输出数组相同的形状和缓冲区长度
应用举例 import numpy as npa np.array([[30,40,70],[80,20,10],[50,90,60]])print(a)
[[30 40 70][80 20 10][50 90 60]]print (np.argmax(a))
7print(np.argmin(a))
5print(np.argmax(a, axis0))
[1 2 0]print(np.argmin(a, axis0))
[0 1 1]【4x03】sum()
numpy.sum() 函数用于计算所有元素的和。
基本语法numpy.sum(a, axisNone, dtypeNone, outNone, keepdimsno value, initialno value, whereno value)
参数描述a待处理的数组对象axis指定轴可选项整数或者整数元组类型若未指定则运算前会将数组展平dtype指定数据类型可选项out可选项放置结果的备用输出数组必须具有与预期输出数组相同的形状和缓冲区长度keepdimsbool 类型可选项是否保持数组的二维特性initial初始值标量可选项如果设置了标量则除了元素之间的求和外还会和标量进行求和where求和条件总和中要包括的元素
应用举例 import numpy as npprint(np.sum([[0, 1], [0, 5]]))
6print(np.sum([[0, 1], [0, 5]], axis0))
[0 6]print(np.sum([[0, 1], [0, 5]], axis1))
[1 5]print(np.sum([[0, 1], [np.nan, 5]], where[False, True], axis1))
[1. 5.]print(np.sum([10], initial5))
15【4x04】cumsum() / cumprod()
numpy.cumsum()返回一个一维数组每个元素都是之前所有元素的累加和。 numpy.cumprod()返回一个一维数组每个元素都是之前所有元素的累乘积。
基本语法numpy.cumsum(a, axisNone, dtypeNone, outNone)numpy.cumprod(a, axisNone, dtypeNone, outNone)
参数描述a待处理的数组对象axis指定轴可选项整数或者整数元组类型若未指定则运算前会将数组展平dtype指定数据类型可选项out可选项放置结果的备用输出数组必须具有与预期输出数组相同的形状和缓冲区长度
应用举例 import numpy as npa np.array([[1,2,3], [4,5,6]])print(np.cumsum(a))
[ 1 3 6 10 15 21]print(np.cumsum(a, axis0))
[[1 2 3][5 7 9]]print(np.cumsum(a, axis1))
[[ 1 3 6][ 4 9 15]]print(np.cumprod(a))
[ 1 2 6 24 120 720]print(np.cumprod(a, axis0))
[[ 1 2 3][ 4 10 18]]print(np.cumprod(a, axis1))
[[ 1 2 6][ 4 20 120]]【4x05】ptp()
numpy.ptp() 函数用于计算数组中元素最大值与最小值的差。
基本语法numpy.ptp(a[, axisNone, outNone, keepdimsno value])
参数描述a待处理的数组对象axis指定轴可选项整数或者整数元组类型out可选项放置结果的备用输出数组必须具有与预期输出数组相同的形状和缓冲区长度keepdimsbool 类型可选项是否保持数组的二维特性
应用举例 import numpy as npa np.array([[2,5,8],[7,6,3],[2,9,4]])print(a)
[[2 5 8][7 6 3][2 9 4]]print(np.ptp(a))
7print(np.ptp(a, axis0))
[5 4 5]print(np.ptp(a, axis1))
[6 4 7]print(np.ptp(a, axis1, keepdimsTrue))
[[6][4][7]]【4x06】percentile()
numpy.percentile() 函数用于计算一个多维数组的任意百分位数。
百分位数统计学术语如果将一组数据从小到大排序并计算相应的累计百分位则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为一组 n 个观测值按数值大小排列。如处于 p% 位置的值称第 p 百分位数。
基本语法numpy.percentile(a, q[, axisNone, outNone, overwrite_inputFalse, interpolationlinear, keepdimsFalse])
参数描述a待处理的数组对象q要计算的百分位数在 [0, 100] 之间axis指定轴可选项整数或者整数元组类型out可选项放置结果的备用输出数组必须具有与预期输出数组相同的形状和缓冲区长度overwrite_inputbool 值可选项如果为True则允许通过中间计算来修改输入数组 a 以节省内存在这种情况下此操作完成后 a 的内容是不确定的interpolation可选项指定当所需百分比位于两个数据点 ij 之间时要使用的插值方法lineari (j - i) * fraction其中 fraction 是由 i 和 j 包围的索引的分数部分lowerihigherjnearesti 或 j以最近者为准midpoint(i j) / 2keepdimsbool 类型可选项是否保持数组的二维特性
应用举例 import numpy as npa np.array([[10, 7, 4], [3, 2, 1]])print(a)
[[10 7 4][ 3 2 1]]print(np.percentile(a, 50))
3.5print(np.percentile(a, 50, axis0))
[6.5 4.5 2.5]print(np.percentile(a, 50, axis1))
[7. 2.]print(np.percentile(a, 50, axis1, keepdimsTrue))
[[7.][2.]]【4x07】median()
numpy.median() 函数用于计算数组元素的中位数。
基本语法numpy.median(a[, axisNone, outNone, overwrite_inputFalse, keepdimsFalse])
参数描述a待处理的数组对象axis指定轴可选项整数或者整数元组类型out可选项放置结果的备用输出数组必须具有与预期输出数组相同的形状和缓冲区长度overwrite_inputbool 值可选项如果为True则允许通过中间计算来修改输入数组 a 以节省内存在这种情况下此操作完成后 a 的内容是不确定的keepdimsbool 类型可选项是否保持数组的二维特性
应用举例 import numpy as npa np.array([[10, 7, 4], [3, 2, 1]])print(a)
[[10 7 4][ 3 2 1]]print(np.median(a))
3.5print(np.median(a, axis0))
[6.5 4.5 2.5]print(np.median(a, axis1))
[7. 2.]【4x08】mean()
numpy.mean() 函数计算数组中元素的算术平均值。
算术平均值沿轴的元素的总和除以元素的数量。
基本语法numpy.mean(a[, axisNone, dtypeNone, outNone])
参数描述a待处理的数组对象axis指定轴可选项整数或者整数元组类型dtype可选项用于计算平均值的类型out可选项放置结果的备用输出数组必须具有与预期输出数组相同的形状和缓冲区长度
应用举例 import numpy as npa np.array([[10, 7, 4], [3, 2, 1]])print(a)
[[10 7 4][ 3 2 1]]print(np.mean(a))
4.5print(np.mean(a, axis0))
[6.5 4.5 2.5]print(np.mean(a, axis1))
[7. 2.]【4x09】average()
numpy.average() 函数根据在另一个数组中给出的各自的权重来计算数组中元素的加权平均值。
加权平均值将各数值乘以相应的权数然后加总求和得到总体值再除以总的单位数。
例如现有数组 [1, 2, 3, 4]相应的权重为 [5, 6, 7, 8]则计算方法为1*52*63*74*8/5678≈ 2.6923
基本语法numpy.average(a[, axisNone, weightsNone, returnedFalse])
参数描述a待处理的数组对象axis指定轴可选项整数或者整数元组类型weights可选项与 a 中的值相关联的权重数组如果 weightsNone则 a 中的所有数据都具有 1 的权重相当于 mean 函数returned可选项bool 类型默认为 False如果为 True则返回元组 (加权平均值, 权重)否则只返回加权平均值
应用举例 import numpy as npa np.array([1, 2, 3, 4])print(np.average(a)) # 不指定权重时相当于 mean 函数
2.5print(np.average(a, weights[5, 6, 7, 8]))
2.6923076923076925print(np.average(a, weights[5, 6, 7, 8], returnedTrue))
(2.6923076923076925, 26.0)【4x10】std() / var()
numpy.std() 和 numpy.var() 分别用于计算数组元素的标准差与方差。
标准差是一组数据平均值分散程度的一种度量标准差是方差的算术平方根。
方差为 S2标准差为 S计算公式如下
S21n∑i1n(xi−x‾)2S^2 \frac {1} {n} \sum_{i1} ^ {n} (x_i - \overline {x})^2S2n1i1∑n(xi−x)2
SS2S \sqrt {S^2}SS2
基本语法
numpy.std(a, axisNone, dtypeNone, outNone, ddof0, keepdimsno value)
numpy.var(a[, axisNone, dtypeNone, outNone, ddof0, keepdimsno value])
参数描述a待处理的数组对象axis指定轴可选项整数或者整数元组类型dtype可选项值的数据类型out可选项放置结果的备用输出数组必须具有与预期输出数组相同的形状和缓冲区长度ddof自由度Delta Degrees of Freedom计算中使用的除数是 N-ddof其中 N 表示元素的数量ddof 默认为零keepdimsbool 类型可选项是否保持数组的二维特性
应用举例 import numpy as npa np.array([[1, 2], [3, 4]])print(a)
[[1 2][3 4]]print(np.std(a))
1.118033988749895print(np.std(a, axis0))
[1. 1.]print(np.std(a, axis1))
[0.5 0.5]print(np.var(a))
1.25print(np.var(a, axis0))
[1. 1.]print(np.var(a, axis1))
[0.25 0.25]这里是一段防爬虫文本请读者忽略。
本文原创首发于 CSDN作者 TRHX。
博客首页https://itrhx.blog.csdn.net/
本文链接https://itrhx.blog.csdn.net/article/details/105398131
未经授权禁止转载恶意转载后果自负尊重原创远离剽窃【5x00】NumPy 排序函数
NumPy 排序函数中可以指定使用的排序方法各种分类算法的特征在于它们的平均速度最坏情况下的性能工作空间大小以及它们是否稳定三种算法对比如下
方法速度最坏情况工作空间稳定性快速排序quicksort1O(n^2)0no归并排序mergesort2O(n*log(n))~n/2yes堆排序heapsort3O(n*log(n))0no
【5x01】sort()
numpy.sort() 函数会将原数组元素从小到大排序返回输入数组的排序副本。
基本语法numpy.sort(a[, axis-1, kindquicksort, orderNone])
参数描述a要排序的数组axis要排序的轴可选项如果为 None则在排序之前会将数组展平默认值为 -1它沿着最后一个轴排序kind排序算法可选项默认值为快速排序quicksortorder字符串或者字符串列表可选项若指定 order 值将按照该字段进行排序
应用举例 import numpy as npa np.array([[1,4],[3,1]])print(np.sort(a))
[[1 4][1 3]]print(np.sort(a, axisNone)) # 数组将展平
[1 1 3 4]print(np.sort(a, axis0))
[[1 1][3 4]]print(np.sort(a, axis1))
[[1 4][1 3]]import numpy as npdtype [(name, S10), (height, float), (age, int)]values [(Arthur, 1.8, 41), (Lancelot, 1.9, 38), (Galahad, 1.7, 38)]a np.array(values, dtypedtype)print(a)
[(bArthur, 1.8, 41) (bLancelot, 1.9, 38) (bGalahad, 1.7, 38)]print(np.sort(a, orderheight)) # 按 height 排序
[(bGalahad, 1.7, 38) (bArthur, 1.8, 41) (bLancelot, 1.9, 38)]print(np.sort(a, order[age, height])) # 按 age 排序如果 age 相等则按 height 排序
[(bGalahad, 1.7, 38) (bLancelot, 1.9, 38) (bArthur, 1.8, 41)]【5x02】msort()
numpy.msort() 函数将数组按第一个轴从小到大排序返回排序后的数组副本相当于 numpy.sort(a, axis0)
应用举例 import numpy as npprint(np.msort([[1, 4, 5], [2, 1, 3]]))
[[1 1 3][2 4 5]]print(np.sort([[1, 4, 5], [2, 1, 3]], axis0))
[[1 1 3][2 4 5]]【5x03】argsort()
numpy.argsort() 函数将原数组元素从小到大排列提取其对应在原数组中的索引值并返回。
举例原数组为[3, 1, 2]从小到大排列[1, 2, 3]排列后的各元素在原数组中对应的索引值[1, 2, 0]
基本语法numpy.argsort(a[, axis-1, kindNone, orderNone])
参数描述a要排序的数组axis要排序的轴可选项如果为 None则在排序之前会将数组展平默认值为 -1它沿着最后一个轴排序kind排序算法可选项默认值为快速排序quicksortorder字符串或者字符串列表可选项若指定 order 值将按照该字段进行排序
应用举例 import numpy as npa np.array([3, 1, 2])print(np.argsort(a))
[1 2 0]b np.array([[0, 3], [2, 2]])print(np.argsort(b))
[[0 1][0 1]]print(np.argsort(b, axis0))
[[0 1][1 0]]print(np.argsort(b, axis1))
[[0 1][0 1]]【5x04】lexsort()
numpy.lexsort() 函数使用键序列执行间接稳定排序用于对多个序列进行排序返回其索引值。
基本语法numpy.lexsort(keys, axis-1)
参数描述keys类似于 (k, N) 的要排序的数组axis指定要排序的轴默认对最后一个轴进行排序
举例现有数组 a [1,5,1,4,3,4,4]b [9,4,0,4,0,2,1]利用 lexsort() 函数排序后的结果为[2,0,4,6,5,3,1]排序过程如下
假设数组 a1 为语文成绩a1 [1,5,1,4,3,4,4] 假设数组 b1 为数学成绩b1 [9,4,0,4,0,2,1] 数组索引值 c1 为同学姓名 c1 [0,1,2,3,4,5,6]
1、首先按照语文成绩进行排名 语文成绩数组 a从小到大排名a2 [1,1,3,4,4,4,5]对应的学生姓名索引值为c2 [0,2,4,3,5,6,1]现在可以看到 0、2 同学的语文成绩都一样均为 1 3、5、6 同学的语文成绩都一样均为 4
2、接下来对于语文成绩相同的按照他们的数学成绩再次进行排名 0、2 同学对应的数学成绩分别为9 和 0从小到大再次排序即 0 排在 2 的后面对应的学生姓名为 c3 [2,0,4,3,5,6,1] 3、5、6 同学对应的数学成绩分别为4、2、1从小到大再次排序后对应的学生姓名为 c4 [2,0,4,6,5,3,1]即最终结果。
简单来说先对数组 a 从小到大排序提取排序后元素对应的索引值排序后元素有相同的再根据数组 b 从小到大排序得到最终的索引值。
以上步骤用 numpy.lexsort() 函数实现如下 import numpy as npa [1,5,1,4,3,4,4]b [9,4,0,4,0,2,1]c1 np.lexsort((a,b)) # 先按 b 排序再按照 a 排序c2 np.lexsort((b,a)) # 先按 a 排序再按照 b 排序print(c1)
[2 4 6 5 3 1 0]print(c2)
[2 0 4 6 5 3 1]print([(a[i],b[i]) for i in c1])
[(1, 0), (3, 0), (4, 1), (4, 2), (4, 4), (5, 4), (1, 9)]print([(a[i],b[i]) for i in c2])
[(1, 0), (1, 9), (3, 0), (4, 1), (4, 2), (4, 4), (5, 4)]import numpy as npfirst_names (Hertz, Galilei, Hertz)second_names (Heinrich, Galileo, Gustav)print(np.lexsort((second_names, first_names))) # 按照字母对应的 ascii 码从小到大进行排序
[1 2 0]【5x05】sort_complex()
numpy.sort_complex() 函数先使用实部再使用虚部对复数数组进行排序。
复数把形如 zabia,b 均为实数的数称为复数其中 a 称为实部b 称为虚部i 称为虚数单位。
基本语法numpy.sort_complex(a)
应用举例 import numpy as npprint(np.sort_complex([5, 3, 6, 2, 1]))
[1.0.j 2.0.j 3.0.j 5.0.j 6.0.j]print(np.sort_complex([1 2j, 2 - 1j, 3 - 2j, 3 - 3j, 3 5j]))
[1.2.j 2.-1.j 3.-3.j 3.-2.j 3.5.j]【5x06】partition()
numpy.partition() 函数用于对数组进行分区排序返回数组的分区副本。
基本语法numpy.partition(a, kth[, axis-1, kindintroselect, orderNone])
参数描述a待排序数组kth整数或者整数序列原数组元素中从小到大的第 k 个元素在排序后的数组中仍然处于第 k 位置小于该元素的位于该元素的左边大于该元素的位于该元素的右边左右两边没有特别的排序要求axis指定要排序的轴可选项默认对最后一个轴进行排序kind排序算法可选项默认值为快速排序quicksortorder字符串或者字符串列表可选项若指定 order 值将按照该字段进行排序
应用举例 import numpy as npa np.array([3, 4, 2, 1])print(np.partition(a, 3)) # 原数组元素中从小到大的第 3 个元素排序后仍然处于第 3 位置小于 3 的在前面大于 3 的在后面前后无特别排序要求
[2 1 3 4]print(np.partition(a, (1, 3))) # 小于 1 的在前面大于 3 的在后面1 和 3 之间的在中间
[1 2 3 4]【5x07】argpartition()
numpy.argpartition() 函数用于对数组进行分区排序返回重组后的索引值数组。
利用该函数可以很快地找出第 k 大的数的位置以及大于 k排在 k 后面和小于 k排在 k 前面的数的位置。
基本语法numpy.argpartition(a[, kth, axis-1, kindintroselect, orderNone])
参数描述a待排序数组kth整数或者整数序列原数组元素中从小到大的第 k 个元素在排序后的数组中仍然处于第 k 位置小于该元素的位于该元素的左边大于该元素的位于该元素的右边左右两边没有特别的排序要求axis指定要排序的轴可选项默认对最后一个轴进行排序kind排序算法可选项默认值为快速排序quicksortorder字符串或者字符串列表可选项若指定 order 值将按照该字段进行排序
以下实例将找到数组的第 3 小索引值 2的值和第 2 大索引值 -2的值 import numpy as npa np.array([46, 57, 23, 39, 1, 10, 0, 120])print(a[np.argpartition(a, 2)[2]])
10print(a[np.argpartition(a, -2)[-2]])
57【5x08】unique()
numpy.unique() 函数找到唯一值并返回从小到大的排序结果类似于 Python 的 set 集合。
应用举例 import numpy as npprint(np.unique([1, 1, 2, 2, 3, 3]))
[1 2 3]a np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])print(np.unique(a, axis0))
[[1 0 0][2 3 4]]【6x00】NumPy 条件函数
【6x01】nonzero()
numpy.nonzero() 函数将返回原数组中非零元素的索引值。
基本语法numpy.nonzero(a)
应用举例 import numpy as npa np.array([[3, 0, 0], [0, 4, 0], [5, 6, 0]])print(np.nonzero(a))
(array([0, 1, 2, 2], dtypeint32), array([0, 1, 0, 1], dtypeint32))返回两个数组其中的元素一一对应比如数字 3 的索引值为 (0,0)数字 4 的索引值为 (1,1)
【6x02】where()
numpy.where() 函数返回数组中满足指定条件的元素的索引值。
基本语法numpy.where(condition[, x, y])
参数描述condition判断条件如果满足该条件则产生 x否则产生 y若未指定 x 与 y则返回满足该条件元素的索引值x, y返回的值为数组对象如果满足 condition则产生 x否则产生 y
应用举例 import numpy as npa np.array([12, 7, 9, 10, 21, 5, 11, 1])print(np.where(a8))
(array([0, 2, 3, 4, 6], dtypeint32),) # 返回满足 a8 的元素的索引值print(np.where(a8, a, 10*a)) # 如果原数组中的元素 a8则返回 a否则返回 10*a
[12 70 9 10 21 50 11 10]【6x03】extract()
numpy.extract() 函数返回数组中满足指定条件的元素。
基本语法numpy.extract(condition, arr)
参数描述condition判断条件arr原数组
应用举例 import numpy as npa np.array([12, 7, 9, 10, 21, 5, 11, 1])print(np.extract(a8, a))
[12 9 10 21 11]import numpy as npa np.arange(9).reshape(3,3)print(a)
[[0 1 2][3 4 5][6 7 8]]condition np.mod(a,2) 0 # 定义筛选条件余数为 0即偶数print(condition)
[[ True False True][False True False][ True False True]]print(np.extract(condition, a))
[0 2 4 6 8]【7x00】NumPy 判断函数
【7x01】any() / all()
numpy.any()如果至少有一个元素满足指定条件则返回 True否则返回 False。
numpy.all()如果所有的元素满足指定条件则返回 True否则返回 False。
基本语法numpy.any(a[, axisNone, outNone, keepdimsno value])numpy.all(a[, axisNone, outNone, keepdimsno value])
参数描述a待处理的数组对象axis指定轴可选项整数或者整数元组类型out可选项放置结果的备用输出数组必须具有与预期输出数组相同的形状和缓冲区长度keepdimsbool 类型可选项是否保持数组的二维特性
应用举例 import numpy as npprint(np.any([[True, False], [True, True]]))
Truea np.array([-3, -2, 4, 2, 8, 1])print(np.any(a0))
Trueimport numpy as npprint(np.all([[True, False], [True, True]]))
Falsea np.array([-3, -2, 4, 2, 8, 1])print(np.all(a0))
False这里是一段防爬虫文本请读者忽略。
本文原创首发于 CSDN作者 TRHX。
博客首页https://itrhx.blog.csdn.net/
本文链接https://itrhx.blog.csdn.net/article/details/105398131
未经授权禁止转载恶意转载后果自负尊重原创远离剽窃