文章目录
- 每篇前言
- 1. 字符串函数
- 2. 数学函数
- 3. 算术函数
- 4. 统计函数
- 5. 排序函数
- 6. 搜索函数
- 7. 书籍推荐
每篇前言
作者介绍:Python领域优质创作者、华为云享专家、阿里云专家博主、2021年CSDN博客新星Top6
- 本文已收录于Python全栈系列专栏:此专栏文章是专门针对Python零基础小白所准备的一套完整教学,从0到100的不断进阶深入的学习,各知识点环环相扣
- 订阅专栏后续可以阅读Python从入门到就业100篇文章;还可私聊进两百人Python全栈交流群(手把手教学,问题解答); 进群可领取80GPython全栈教程视频 + 300本计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
- 加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!
1. 字符串函数
是用于对dtype为numpy.string_或numpy.unicode_的数组执行向量化字符串操作基于Python内置库中的标准字符串函数在字符数组类(numpy.char)中定义
1. add():对两个数组的元素进行字符串连接
>>> import numpy as np>>>>>> print(np.char.add(['hello'],['python']))['hellopython']>>> print(np.char.add(['hello','python'],['yyds']))['helloyyds' 'pythonyyds']
2. multiply():返回按元素多重连接后的字符串
>>> import numpy as np>>>>>> print(np.char.multiply(['hello'], 3))['hellohellohello']
3. center():将字符串居中,,并使用指定字符在左侧和右 侧进行填充
>>> import numpy as np>>>>>> print(np.char.center(['hello', 'python'], 15, fillchar='-'))['-----hello-----' '-----python----']
4. capitalize():将字符串第一个字母转换为大写
>>> import numpy as np>>>>>> print(np.char.capitalize(['hello', 'python']))['Hello' 'Python']
5. title():将字符串的每个单词的第一个字 母转换为大写
>>> import numpy as np>>>>>> print(np.char.title(['hello python']))['Hello Python']
6. lower():数组元素转换为小写
>>> import numpy as np>>>>>> print(np.char.lower(['Hello Python']))['hello python']
7. upper():数组元素转换为大写
>>> import numpy as np>>>>>> print(np.char.upper(['Hello Python']))['HELLO PYTHON']
8. split():指定分隔符对字符串进行分割,并返回数组列表
>>> import numpy as np>>>>>> print(np.char.split(['Hello Python'], sep=' '))[list(['Hello', 'Python'])]
9. splitlines():返回元素中的行列表,以换行符分割
>>> import numpy as np>>>>>> print(np.char.splitlines(['Hello\nPython\nyyds']))[list(['Hello', 'Python', 'yyds'])]
10. strip():移除元素开头或者结尾处的特定字符
>>> import numpy as np>>>>>> print(np.char.strip(['--Hello--', '--python--'], '-'))['Hello' 'python']
11. join():通过指定分隔符来连接数组中的元素
>>> import numpy as np>>>>>> print(np.char.join("*", ['Hello', 'python']))['H*e*l*l*o' 'p*y*t*h*o*n']>>> print(np.char.join(["*", "-"], ['Hello--', 'python']))['H*e*l*l*o*-*-' 'p-y-t-h-o-n']
12. replace():使用新字符串替换字符串中的所有子字符串
>>> import numpy as np>>>>>> print(np.char.replace(['Hello', 'python'], "python", "java"))['Hello' 'java']
13. encode():编码,数组元素依次调用str.encode
>>> import numpy as np>>>>>> print(np.char.encode(['Hello', 'python'], "utf-8"))[b'Hello' b'python']
14. decode():解码,数组元素依次调用str.decode
>>> import numpy as np>>>>>> a = np.char.encode(['Hello', 'python'], "utf-8")>>> print(np.char.decode(a, "utf-8"))['Hello' 'python']
2. 数学函数
1. 标准三角函数sin()、cos()、tan()
>>> import numpy as np>>>>>> a = np.array([0, 30, 45, 60, 90, 180])>>> print('不同角度的正弦值: ')不同角度的正弦值:>>> print(np.sin(a * np.pi / 180))[0.00000000e+00 5.00000000e-01 7.07106781e-01 8.66025404e-01 1.00000000e+00 1.22464680e-16]>>>>>> print('数组中角度的余弦值: ')数组中角度的余弦值:>>> print(np.cos(a * np.pi / 180))[ 1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01 6.12323400e-17 -1.00000000e+00]>>>>>> print('数组中角度的正切值: ')数组中角度的正切值:>>> print(np.tan(a * np.pi / 180))[ 0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00 1.63312394e+16 -1.22464680e-16]
2. 反三角函数arcsin()、arccos()、arctan()
>>> a = np.array([0, 30, 45, 60, 90, 180])>>> print('含有正弦值的数组: ')含有正弦值的数组:>>> sin = np.sin(a * np.pi / 180)>>> print(sin)[0.00000000e+00 5.00000000e-01 7.07106781e-01 8.66025404e-01 1.00000000e+00 1.22464680e-16]>>>>>> print('计算角度的反正弦,返回值以弧度为单位: ')计算角度的反正弦,返回值以弧度为单位:>>> inv = np.arcsin(sin)>>> print(inv)[0.00000000e+00 5.23598776e-01 7.85398163e-01 1.04719755e+00 1.57079633e+00 1.22464680e-16]>>>>>> print('通过转化为角度制来检查结果: ')通过转化为角度制来检查结果:>>> print(np.degrees(inv))[0.0000000e+00 3.0000000e+01 4.5000000e+01 6.0000000e+01 9.0000000e+01 7.0167093e-15]>>>>>> print('arccos和arctan 函数行为类似: ')arccos和arctan 函数行为类似:>>> cos = np.cos(a * np.pi / 180)>>> print(cos)[ 1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01 6.12323400e-17 -1.00000000e+00]>>>>>> print('反余弦: ')反余弦:>>> inv = np.arccos(cos)>>> print(inv)[0. 0.52359878 0.78539816 1.04719755 1.57079633 3.14159265]>>>>>> print('角度制单位: ')角度制单位:>>> print(np.degrees(inv))[ 0. 30. 45. 60. 90. 180.]>>>>>> print('tan函数: ')tan函数:>>> tan = np.tan(a * np.pi / 180)>>> print(tan)[ 0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00 1.63312394e+16 -1.22464680e-16]>>>>>> print('反正切:')反正切:>>> inv = np.arctan(tan)>>> print(inv)[ 0.00000000e+00 5.23598776e-01 7.85398163e-01 1.04719755e+00 1.57079633e+00 -1.22464680e-16]>>>>>> print('角度制单位: ')角度制单位:>>> print(np.degrees(inv))[ 0.0000000e+00 3.0000000e+01 4.5000000e+01 6.0000000e+01 9.0000000e+01 -7.0167093e-15]
3. numpy.around(a, decimals=0):返回指定数字的四舍五入值
参数说明:
- a:数组
- decimals:舍入的小数位数。默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
>>> import numpy as np>>>>>> a = np.array([1.0, 2.22, 3.456, 4.4444, 5.5555, 12345])>>> print(a)[1.0000e+00 2.2200e+00 3.4560e+00 4.4444e+00 5.5555e+00 1.2345e+04]>>>>>> print(np.around(a))[1.0000e+00 2.0000e+00 3.0000e+00 4.0000e+00 6.0000e+00 1.2345e+04]>>> print(np.around(a, decimals=1))[1.0000e+00 2.2000e+00 3.5000e+00 4.4000e+00 5.6000e+00 1.2345e+04]>>> print(np.around(a, decimals=-1))[0.000e+00 0.000e+00 0.000e+00 0.000e+00 1.000e+01 1.234e+04]
4. floor():向下取整,反回不大于输入参数的最大整数。即标量x 的下限是最大的整数i,使得i <=X。注意在Python中, 向下取整总是从0舍入
>>> import numpy as np>>>>>> a = np.array([1.0, 2.2, 3.4, 4.4, 5.5, 12345])>>> print(a)[1.0000e+00 2.2000e+00 3.4000e+00 4.4000e+00 5.5000e+00 1.2345e+04]>>>>>> print(np.floor(a))[1.0000e+00 2.0000e+00 3.0000e+00 4.0000e+00 5.0000e+00 1.2345e+04]
5. ceil():向.上取整,返回输入值的上限,即,标量x的上限是最小的整数i,使得i>= x
>>> import numpy as np>>>>>> a = np.array([1.0, 2.2, 3.4, 4.4, 5.5, 12345])>>> print(a)[1.0000e+00 2.2000e+00 3.4000e+00 4.4000e+00 5.5000e+00 1.2345e+04]>>>>>> print(np.ceil(a))[1.0000e+00 3.0000e+00 4.0000e+00 5.0000e+00 6.0000e+00 1.2345e+04]
3. 算术函数
1. 加减乘除:add(),subtract(),multiply(),divide()
>>> import numpy as np>>>>>> x = np.arange(9, dtype="f").reshape(3, 3)>>> print("x数组: ")x数组:>>> print(x)[[0. 1. 2.] [3. 4. 5.] [6. 7. 8.]]>>>>>> y = np.array([10, 10, 10])>>> print("y数组: ")y数组:>>> print(y)[10 10 10]>>>>>> print("两个数组相加")两个数组相加>>> print(np.add(x, y))[[10. 11. 12.] [13. 14. 15.] [16. 17. 18.]]>>>>>> print("两个数组相减")两个数组相减>>> print(np.subtract(x, y))[[-10. -9. -8.] [ -7. -6. -5.] [ -4. -3. -2.]]>>>>>> print("两个数组相乘")两个数组相乘>>> print(np.multiply(x, y))[[ 0. 10. 20.] [30. 40. 50.] [60. 70. 80.]]>>>>>> print("两个数组相除")两个数组相除>>> print(np.divide(x, y))[[0. 0.1 0.2] [0.3 0.4 0.5] [0.6 0.7 0.8]]
2. reciprocal():返回参数逐个元素的倒数
>>> import numpy as np>>>>>> x = np.arange(10)>>> print(x)[0 1 2 3 4 5 6 7 8 9]>>> print(np.reciprocal(x))[-2147483648 1 0 0 0 0 0 0 0 0]
3. power():将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂
>>> import numpy as np>>>>>> a = np.array([1, 2, 3])>>> b = np.array([10, 10, 10])>>>>>> print(np.power(a, b))[ 1 1024 59049]
4. mod()、remainder():计算输入数组中相应元素的相除后的余数
>>> import numpy as np>>>>>> a = np.array([10, 10, 10])>>> b = np.array([1, 2, 3])>>>>>> print(np.mod(a, b))[0 0 1]>>> print(np.remainder(a, b))[0 0 1]
4. 统计函数
1. amax()、amin():计算数组中的元素沿指定轴的最大值、最小值
>>> import numpy as np>>>>>> a = np.arange(12).reshape(3, 4)>>> print(a)[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]>>>>>> print(np.amax(a, 0))[ 8 9 10 11]>>> print(np.amax(a, 1))[ 3 7 11]>>>>>> print(np.amin(a, 0))[0 1 2 3]>>> print(np.amin(a, 1))[0 4 8]
2. ptp():计算数组中元素最大值与最小值的差(最大值-最小值)
>>> import numpy as np>>>>>> a = np.arange(12).reshape(3, 4)>>> print(a)[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]>>>>>> print(np.ptp(a, 0))[8 8 8 8]>>> print(np.ptp(a, 1))[3 3 3]
3. numpy . percentile(a, q,axis):百分位数是统计中使用的度量、表示小于这个值的观察值的百分比
参数说明:
- a:输入数组
- p:要计算的百分位数,在0~ 100之间(第p个百分位数是这样一个值, 它使得至少有p%的数据项小于或等于这个值,且至少有(100-p)%的数据项大于或等于这个值)
- axis:沿着它计算百分位数的轴
>>> import numpy as np>>>>>> a = np.arange(12).reshape(3, 4)>>> print(a)[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]>>>>>> print(np.percentile(a, 50))5.5>>> print(np.percentile(a, 50, axis=0))[4. 5. 6. 7.]>>> print(np.percentile(a, 50, axis=1))[1.5 5.5 9.5]>>> print(np.percentile(a, 50, axis=1, keepdims=True))[[1.5] [5.5] [9.5]]
4. sum():求和
>>> import numpy as np>>>>>> t = np.arange(1,11).reshape(2,5)>>> tarray([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]])>>> np.sum(t)55>>> np.sum(t,axis=0) # axis=0表示每列相加的结果array([ 7, 9, 11, 13, 15])>>> np.sum(t,axis=1) # axis=1表示每行相加的结果array([15, 40])
5. mean() :均值,受离群点的影响较大
>>> import numpy as np>>>>>> t = np.arange(1,11).reshape(2,5)>>> tarray([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]])>>> t.mean(axis=None)5.5>>> t.mean(axis=0)array([3.5, 4.5, 5.5, 6.5, 7.5])>>> t.mean(axis=1)array([3., 8.])
6. median() :中值
>>> import numpy as np>>>>>> t = np.arange(1,11).reshape(2,5)>>> tarray([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]])>>> np.median(t,axis=None)5.5>>> np.median(t,axis=0)array([3.5, 4.5, 5.5, 6.5, 7.5])>>> np.median(t,axis=1)array([3., 8.])
7. std() :标准差是一组数据平均值分散程度的一种度量。一个较大的标准差,代表大部分数值和其平均值之间差异较大;一个较小的标准差,代表这些数值较接近平均值反映出数据的波动稳定情况,越大表示波动越大,约不稳定
>>> import numpy as np>>>>>> t = np.arange(1,11).reshape(2,5)>>> tarray([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]])>>> t.std(axis=None)2.8722813232690143>>> t.std(axis=0)array([2.5, 2.5, 2.5, 2.5, 2.5])>>> t.std(axis=1)array([1.41421356, 1.41421356])
5. 排序函数
1. sort(a, axis, kind, order):返回输入数组的排序副本
参数说明:
- a:要排序的数组
- axis:沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序,axis=0按列排序,axis=1 按行排序
kind:排序算法,默认为’quicksort’ - order:如果数组包含字段,则是要排序的字段
>>> import numpy as np>>>>>> x = np.random.randint(1, 11, 12).reshape(3, 4)>>> print("x数组: ")x数组:>>> print(x)[[ 6 1 7 6] [10 4 1 9] [ 2 8 3 9]]>>>>>> print("调用sort()函数后: ")调用sort()函数后:>>> print(np.sort(x))[[ 1 6 6 7] [ 1 4 9 10] [ 2 3 8 9]]>>>>>> print("按列排序: ")按列排序:>>> print(np.sort(x, axis=0))[[ 2 1 1 6] [ 6 4 3 9] [10 8 7 9]]>>>>>> # 在sort函数中排序字段>>> dt = np.dtype([('name', 'S10'), ('age', int)])>>> y = np.array([("xiaoming", 10), ("xiaoming", 20), ("xiaohong", 30), ("xiaobai", 40)], dtype=dt)>>> print("y数组: ")y数组:>>> print(y)[(b'xiaoming', 10) (b'xiaoming', 20) (b'xiaohong', 30) (b'xiaobai', 40)]>>>>>> print("按age排序:")按age排序:>>> print(np.sort(y, order="age"))[(b'xiaoming', 10) (b'xiaoming', 20) (b'xiaohong', 30) (b'xiaobai', 40)]
2. argbort():对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。这个索引数组用于构造排序后的数组
>>> import numpy as np>>>>>> x = np.array([3,1,2])>>> print("x数组: ")x数组:>>> print(x)[3 1 2]>>>>>> print("使用argsort()函数排序: ")使用argsort()函数排序:>>> i = np.argsort(x)>>> print(i)[1 2 0]>>>>>> print("一排序后的顺序重构原数组: ")一排序后的顺序重构原数组:>>> print(x[i])[1 2 3]>>>>>> print("使用循环重构原数组: ")使用循环重构原数组:>>> for index in i:... print(x[index])...123
3. lexsort():使用键序列执行间接排序。键可以看作是电子表格中的一列。该函数返回一个索引数组,使用它可以获得排序数据。注意:最后一个键恰好是sort的主键
>>> import numpy as np>>>>>> nm = ('raju', 'anil', 'ravi', ' amar')>>> dv = ('f.y.', 's.y.', 's.y.', 'f.y.')>>> print('调用lexsort() 函数: ')调用lexsort() 函数:>>> ind = np.lexsort((dv, nm))>>> print(ind)[3 1 0 2]>>>>>> print('使用这个索引来获取排序后的数据: ')使用这个索引来获取排序后的数据:>>> print([nm[i] + "," + dv[i] for i in ind])[' amar,f.y.', 'anil,s.y.', 'raju,f.y.', 'ravi,s.y.']
4. msort(a):数组按第一个轴排序,返回排序后的数组副本。说明: np.msort(a) 相等于np.sort(a, axis=0)
5. sort_ complex(a):对复数按照先实部后虚部的顺序进行排序
>>> import numpy as np>>>>>> x = np.array([100, 20, 30, 10, 50])>>> print("x数组: ")x数组:>>> print(x)[100 20 30 10 50]>>>>>> print(" x使用sort_ .complex( )函数排序: ") x使用sort_ .complex( )函数排序:>>> print(np.sort_complex(x))[ 10.+0.j 20.+0.j 30.+0.j 50.+0.j 100.+0.j]>>>>>> y = np.array([1 + 2j, 2 - 1j, 3 - 2j, 3 - 3j, 3 + 5j])>>> print("y数组: ")y数组:>>> print(y)[1.+2.j 2.-1.j 3.-2.j 3.-3.j 3.+5.j]>>>>>> print("y使用sort_ complex( )函数排序: ")y使用sort_ complex( )函数排序:>>> print(np.sort_complex(y))[1.+2.j 2.-1.j 3.-3.j 3.-2.j 3.+5.j]
6. partition(a, kth[, axis, kind, order]):指定已个数,对数组进行分区
>>> import numpy as np>>>>>> x = np.array([3, 4, 2, 1])>>> print("x数组: ")x数组:>>> print(x)[3 4 2 1]>>>>>> # 将数组x中所有元素(包括重复元素)从小到大排列,3表示的是排序数组索引为3的数字,比该数字小的排在该数字前面,比该数字 大的排在该数字的后面>>> print(np.partition(x, 3))[2 1 3 4]>>>>>> # 小于1的在前面,大于3的在后面,1和3之间的在中间>>> print(np.partition(x, (1, 3)))[1 2 3 4]
7. argpartition(a, kth[, axis, kind, order]):可以通过关键字kind指定算法沿着指定轴对数组进行分区
>>> import numpy as np>>>>>> y = np.array([46, 57, 23, 39, 1, 10, 0, 120])>>> print("y数组: ")y数组:>>> print(y)[ 46 57 23 39 1 10 0 120]>>>>>> print("找到数组的第3小(index=2) 的值和第2大(index=-2) 的值:")找到数组的第3小(index=2) 的值和第2大(index=-2) 的值:>>> print(y[np.argpartition(y, 2)[2]])10>>> print(y[np.argpartition(y, -2)[-2]])57>>> print("同时找到第3和第4小的值:")同时找到第3和第4小的值:>>> # 用[2,3]同时将第3和第4小的排序好,然后可以分别通过下标[2]和[3]取得>>> print(y[np.argpartition(y, [2, 3])[2]])10>>> print(y[np.argpartition(y, [2, 3])[3]])23
6. 搜索函数
1. max() :最大值
>>> import numpy as np>>>>>> t = np.arange(1,11).reshape(2,5)>>> tarray([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]])>>> t.max(axis=0)array([ 6, 7, 8, 9, 10])>>> t.max(axis=1)array([ 5, 10])
2. min(axis=None):最小值
>>> import numpy as np>>>>>> t = np.arange(1,11).reshape(2,5)>>> tarray([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]])>>> t.min(axis=None)1>>> t.min(axis=0)array([1, 2, 3, 4, 5])>>> t.min(axis=1)array([1, 6])
3. argmax():沿给定轴返回最大元素的索引
>>> import numpy as np>>>>>> t = np.arange(1,11).reshape(2,5)>>> tarray([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]])>>>>>> t.argmax(axis=None)9>>>>>> t.argmax(axis=0)array([1, 1, 1, 1, 1], dtype=int64)>>>>>> t.argmax(axis=1)array([4, 4], dtype=int64)
4. argmin():沿给定轴返回最小元素的索引
>>> import numpy as np>>>>>> t = np.arange(1,11).reshape(2,5)>>> tarray([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]])>>>>>> t.argmin(axis=None)0>>>>>> t.argmin(axis=0)array([0, 0, 0, 0, 0], dtype=int64)>>>>>> t.argmin(axis=1)array([0, 0], dtype=int64)
5. nonzero():返回输入数组中非零元素的索引
>>> import numpy as np>>>>>> x = np.array([[30, 40, 0], [0, 20, 10], [50, 0, 60]])>>> print("x数组: ")x数组:>>> print(x)[[30 40 0] [ 0 20 10] [50 0 60]]>>>>>> print(np.nonzero(x))(array([0, 0, 1, 1, 2, 2], dtype=int64), array([0, 1, 1, 2, 0, 2], dtype=int64))
6. where():返回输入数组中满足给定条件的元素的索引
>>> import numpy as np>>>>>> x = np.array([[30, 40, 0], [0, 20, 10], [50, 0, 60]])>>> print("x数组: ")x数组:>>> print(x)[[30 40 0] [ 0 20 10] [50 0 60]]>>>>>> print("大于30的元素的索引: ")大于30的元素的索引:>>> y = np.where(x > 30)>>> print(y)(array([0, 2, 2], dtype=int64), array([1, 0, 2], dtype=int64))>>>>>> print("使用这些索引来获取满足条件的元素: ")使用这些索引来获取满足条件的元素:>>> print(x[y])[40 50 60]
7. extract():根据某个条件从数组中抽取元素,返回满条件的元素
>>> import numpy as np>>>>>> x = np.array([[31, 40, 4], [2, 23, 10], [50, 3, 60]])>>> print(" x数组: ") x数组:>>> print(x)[[31 40 4] [ 2 23 10] [50 3 60]]>>>>>> # 定义条件,选择偶数元素>>> condition = np.mod(x, 2) == 0>>> print("按元素的条件值: ")按元素的条件值:>>> print(condition)[[False True True] [ True False True] [ True False True]]>>>>>> print("使用条件提取元素: ")使用条件提取元素:>>> print(np.extract(condition, x))[40 4 2 10 50 60]
7. 书籍推荐
书籍展示:《Kerberos域网络安全从入门到精通》
【书籍内容简介】
- 从企业网络组的协议原理、域森林实验环境和安装过程;介绍在域内如何高效搜集有效的域信息,解析针对域网络的攻击手段、典型漏洞及对应的检测防御手段;介绍在域内制作安全隐蔽后门的方法,并针对这些域后门专业介绍基于元数据的检测手段。
本书专业性强,适合具备一定网络基础、编程基础、攻防基础的专业人士阅读,也可以作为网络安全专业的教学用书。
- 京东自营:https://item.jd.com/13651082.html