NumPy函数分为字符串函数,数学算数函数,算数运算和统计函数,以及排序、搜索和计数函数。java
我们依次讲解以上各种:python
1.字符串行数 api
如下函数用于对dtype
为numpy.string_
或numpy.unicode_
的数组执行向量化字符串操做。这些函数在字符数组类(numpy.char
)中定义。numpy.char
类中的函数在执行向量化字符串操做时很是有用。数组
(1).np.char.add()---------------函数执行按元素的字符串链接。ide
import numpy as np print ('链接两个字符串:' ) print (np.char.add(['hello'],[' xyz']) ) print ('\n') print ('链接示例:' ) print (np.char.add(['hello', 'hi'],[' abc', ' xyz']))
输出:函数
链接两个字符串: ['hello xyz'] 链接示例: ['hello abc' 'hi xyz']
(2).np.char.multiply()----------这个函数执行多重链接。编码
print (np.char.multiply('Hello ',3))
输出:spa
Hello Hello Hello
(3).np.char.center()------此函数返回所需宽度的数组,以便输入字符串位于中心,并使用fillchar
在左侧和右侧进行填充。code
print (np.char.center('hello', 20,fillchar = '*'))
输出:blog
*******hello********
(4).np.char.capitalize()-------函数返回字符串的副本,其中第一个字母大写
print (np.char.capitalize('hello world'))
输出:
Hello world
(5).np.char.title()-------返回输入字符串的按元素标题转换版本,其中每一个单词的首字母都大写。
print (np.char.title('hello how are you?'))
输出:
Hello How Are You?
(6).np.char.upper()/lower()-----------函数返回一个数组,其元素转换为大写/小写。它对每一个元素调用str.upper/str.lower。
print (np.char.upper('hello') ) print (np.char.upper(['hello','world']))
输出:
HELLO ['HELLO' 'WORLD']
(7).np.char.split()--------此函数返回输入字符串中的单词列表。 默认状况下,空格用做分隔符。 不然,指定的分隔符字符用于分割字符串。
print( np.char.split ('hello how are you?') ) print( np.char.split ('YiibaiPoint,Hyderabad,Telangana', sep = ','))
输出:
['hello', 'how', 'are', 'you?'] ['YiibaiPoint', 'Hyderabad', 'Telangana']
(8).np.char.splitlines()----返回单词列表,以换行符分割
print( np.char.splitlines('hello\nhow are you?') )
输出:
['hello', 'how are you?']
'\n'
,'\r'
,'\r\n'
都会用做换行符。
(9).np.char.strip()----函数返回数组的副本,其中元素移除了开头或结尾处的特定字符。
print (np.char.strip('ashok arora','a') ) print (np.char.strip(['arora','admin','java'],'a'))
输出:
shok aror ['ror' 'dmin' 'jav']
(10).np.char.join()---这个函数返回一个字符串,其中单个字符由特定的分隔符链接。
print (np.char.join(':','dmy') ) print (np.char.join([':','-'],['dmy','ymd']))
输出:
d:m:y ['d:m:y' 'y-m-d']
(11).np.char.replace()---这个函数返回字符串副本,其中全部字符序列的出现位置都被另外一个给定的字符序列取代。
print (np.char.replace ('He is a good boy', 'is', 'was'))
输出:
He was a good boy
(12).np.char.encode()/decode()-----编码和解码
a = (np.char.encode('hello', 'cp500') ) print (a) print( np.char.decode(a,'cp500'))
输出:
\x88\x85\x93\x93\x96
hello
2.算数函数
NumPy 提供标准的三角函数,算术运算的函数,复数处理函数等。
(1)三角函数---它为弧度制单位的给定角度返回三角函数比值
import numpy as np a = np.array([0,30,45,60,90]) print ('不一样角度的正弦值:' ) # 经过乘 pi/180 转化为弧度 print (np.sin(a*np.pi/180) ) print ('\n' ) print ('数组中角度的余弦值:' ) print (np.cos(a*np.pi/180) ) print ('\n' ) print ('数组中角度的正切值:' ) print (np.tan(a*np.pi/180))
输出:
不一样角度的正弦值: [ 0. 0.5 0.70710678 0.8660254 1. ] 数组中角度的余弦值: [ 1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01 6.12323400e-17] 数组中角度的正切值: [ 0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00 1.63312394e+16]
arcsin
,arccos
,和arctan
函数返回给定角度的sin
,cos
和tan
的反三角函数。 这些函数的结果能够经过numpy.degrees()
函数经过将弧度制转换为角度制来验证。
a = np.array([0,30,45,60,90]) print ( '含有正弦值的数组:') sin = np.sin(a*np.pi/180) print (sin) print ('\n' ) print ('计算角度的反正弦,返回值以弧度为单位:') inv = np.arcsin(sin) print (inv) print ( '\n' ) print ('经过转化为角度制来检查结果:' ) print( np.degrees(inv) )
输出:
含有正弦值的数组: [ 0. 0.5 0.70710678 0.8660254 1. ] 计算角度的反正弦,返回值以弧度制为单位: [ 0. 0.52359878 0.78539816 1.04719755 1.57079633] 经过转化为角度制来检查结果: [ 0. 30. 45. 60. 90.]
2.舍入函数
(1)np.around()---这个函数返回四舍五入到所需精度的值
a = np.array([1.0,5.55, 123, 0.567, 25.532]) print ('原数组:' ) print (a) print ('\n' ) print ('舍入后:') print (np.around(a) ) print( np.around(a, decimals = 1) ) print (np.around(a, decimals = -1))
输出:
原数组: [ 1. 5.55 123. 0.567 25.532] 舍入后: [ 1. 6. 123. 1. 26. ] [ 1. 5.6 123. 0.6 25.5] [ 0. 10. 120. 0. 30. ]
(2).np.floor()----此函数返回不大于输入参数的最大整数。 即标量x
的下限是最大的整数i
,使得i <= x
(3).np.ceil()----返回输入值的上限,即,标量x
的上限是最小的整数i
,使得i> = x
a = np.array([-1.7, 1.5, -0.2, 0.6, 10]) print ('提供的数组:' ) print (a) print ('\n') print ('修改后的数组:' ) print (np.floor(a))
print('----------')
print (np.ceil(a))
输出:
提供的数组: [ -1.7 1.5 -0.2 0.6 10. ] 修改后的数组: [ -2. 1. -1. 0. 10.]
------------
[ -1. 2. -0. 1. 10.]
3.算数运算
执行算术运算(如 加add()
,减subtract()
,乘multiply()
和除divide()
)的输入数组必须具备相同的形状或符合数组广播规则。 A S M D是基本运用。
算数函数:
(1)np.reciprocal()----返回参数逐元素的倒数
a = np.array([25, 1.33, 1, 0, 100]) print (np.reciprocal(a) )
输出:
[ 0.04 0.7518797 1. inf 0.01 ] RuntimeWarning: divide by zero encountered in reciprocal
(2).np.power()----将第一个输入数组中的元素做为底数,计算它与第二个输入数组中相应元素的幂
a = np.array([10,100,1000]) b = np.array([1,2,3]) print( np.power(a,b))
输出:
[ 10 10000 1000000000]
(3)np.mod()----返回输入数组中相应元素的除法余数。 函数numpy.remainder()
也产生相同的结果
a = np.array([10,20,30]) b = np.array([3,5,7]) print( np.mod(a,b) ) print (np.remainder(a,b))
输出:
[1 0 2] [1 0 2]
(4)如下函数用于对含有复数的数组执行操做
numpy.real()
返回复数类型参数的实部。
numpy.imag()
返回复数类型参数的虚部。
numpy.conj()
返回经过改变虚部的符号而得到的共轭复数。(即虚部变为相反数)
numpy.angle()
返回复数参数的角度。 函数的参数是degree
。 若是为true
,返回的角度以角度制来表示,不然为以弧度制来表示。
a = np.array([-5.6j, 0.2j, 11. , 1+1j]) print ('咱们的数组是:' ) print (a ) print ('\n' ) print ( '调用 real() 函数:' ) print (np.real(a) ) print ( '\n' ) print ('调用 imag() 函数:' ) print (np.imag(a) ) print ('\n' ) print ('调用 conj() 函数:' ) print (np.conj(a) ) print ('\n' ) print ( '调用 angle() 函数:' ) print( np.angle(a) ) print ('\n' ) print ( '再次调用 angle() 函数(以角度制返回):' ) print (np.angle(a, deg = True))
输出:
咱们的数组是: [ -0.-5.6j 0.+0.2j 11.+0.j 1.+1.j ] 调用 real() 函数: [ -0. 0. 11. 1.] 调用 imag() 函数: [-5.6 0.2 0. 1. ] 调用 conj() 函数: [ -0.+5.6j 0.-0.2j 11.-0.j 1.-1.j ] 调用 angle() 函数: [-1.57079633 1.57079633 0. 0.78539816] 再次调用 angle() 函数(以角度制返回): [-90. 90. 0. 45.]
4.统计函数
用于从数组中给定的元素中查找最小,最大,百分标准差和方差等
(1)np.amin()/np.amax()----从给定数组中的元素沿指定轴返回最小值和最大值。
默认是全部元素选取,若是指明了axis,则返回对应的轴数组。如:
a = np.array([[3,7,5],[8,4,3],[2,4,9]]) print(np.amin(a,0)) print(np.amax(a)) print(np.amax(a,axis=0))
输出:
[2 4 3] 9 [8 7 9]
(2)np.ptp()----返回沿轴的值的范围(最大值 - 最小值)
a = np.array([[3,7,5],[8,4,3],[2,4,9]]) print(a) print('--------------') print(np.ptp(a)) print('--------------') print(np.ptp(a,axis=1)) print('-------------') print(np.ptp(a,axis=0))
输出:
[[3 7 5] [8 4 3] [2 4 9]] -------------- 7 -------------- [4 5 7] ------------- [6 3 6]
(3)np.percentile()----百分位数是统计中使用的度量,表示小于这个值得观察值占某个百分比
设一个序列供有n个数,要求(k%)的Percentile:
(1)从小到大排序,求(n-1)*k%,记整数部分为i,小数部分为j
(2)所求结果=(1-j)*第(i+1)个数+j*第(i+2)个数
a = np.array([[30,40,70],[80,20,10],[50,90,60]]) print(a) print('--------------------------------') print(np.percentile(a,50)) print('------------------------------') print(np.percentile(a,50,axis=1))
输出:
[[30 40 70] [80 20 10] [50 90 60]] -------------------------------- 50.0 ------------------------------ [ 40. 20. 60.]
(4)np.median()----中值定义为将数据样本的上半部分与下半部分分开的值
(5)np.mean()----算术平均值是沿轴的元素的总和除以元素的数量
(6)np.average()----加权平均值是由每一个份量乘以反映其重要性的因子获得的平均值。
考虑数组[1,2,3,4]
和相应的权重[4,3,2,1]
,经过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。
加权平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1)
a = np.array([10,2,3,4]) print (a) print ('调用 average() 函数:' ) print (np.average(a) ) # 不指定权重时至关于 mean 函数 wts = np.array([4,3,2,1]) print ('再次调用 average() 函数:' ) print (np.average(a,weights = wts) ) # 若是 returned 参数设为 true,则返回权重的和 print ('权重的和:' ) print (np.average([1,2,3, 4],weights = [4,3,2,1], returned = True))
输出:
[10 2 3 4] 调用 average() 函数: 4.75 再次调用 average() 函数: 5.6 权重的和: (2.0, 10.0)
5.标准差和方差
标准差是与均值的误差的平方的平均值的平方根。 标准差公式以下:
std = sqrt(mean((x - x.mean())**2))
方差是误差的平方的平均值,即 mean((x - x.mean())** 2)
。 换句话说,标准差是方差的平方根。