作者介绍:Python领域优质创作者、华为云享专家、阿里云专家博主、2021年CSDN博客新星Top6
- 本文已收录于Python全栈系列专栏:《100天精通Python从入门到就业》
- 此专栏文章是专门针对Python零基础小白所准备的一套完整教学,从0到100的不断进阶深入的学习,各知识点环环相扣
- 订阅专栏后续可以阅读Python从入门到就业100篇文章;还可私聊进两百人Python全栈交流群(手把手教学,问题解答); 进群可领取80GPython全栈教程视频 + 300本计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
- 加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!
是用于对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']
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):返回指定数字的四舍五入值
参数说明:
>>> 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]
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]
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):百分位数是统计中使用的度量、表示小于这个值的观察值的百分比
参数说明:
>>> 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)
>>> t
array([[ 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)
>>> t
array([[ 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)
>>> t
array([[ 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)
>>> t
array([[ 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])
1. sort(a, axis, kind, 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])
...
1
2
3
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
1. max() :最大值
>>> import numpy as np
>>>
>>> t = np.arange(1,11).reshape(2,5)
>>> t
array([[ 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)
>>> t
array([[ 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)
>>> t
array([[ 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)
>>> t
array([[ 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]
【书籍内容简介】
- 从企业网络组的协议原理、域森林实验环境和安装过程;介绍在域内如何高效搜集有效的域信息,解析针对域网络的攻击手段、典型漏洞及对应的检测防御手段;介绍在域内制作安全隐蔽后门的方法,并针对这些域后门专业介绍基于元数据的检测手段。
本书专业性强,适合具备一定网络基础、编程基础、攻防基础的专业人士阅读,也可以作为网络安全专业的教学用书。