NumPy-----函数------Matplotlib库

NumPy函数分为字符串函数,数学算数函数,算数运算和统计函数,以及排序、搜索和计数函数。

咱们依次讲解以上各类:

1.字符串行数 

 以下函数用于对dtypenumpy.string_numpy.unicode_的数组执行向量化字符串操作。这些函数在字符数组类(numpy.char)中定义。numpy.char类中的函数在执行向量化字符串操作时非常有用。

 (1).np.char.add()---------------函数执行按元素的字符串连接。

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))

输出:

Hello Hello Hello

(3).np.char.center()------此函数返回所需宽度的数组,以便输入字符串位于中心,并使用fillchar在左侧和右侧进行填充。

print (np.char.center('hello', 20,fillchar = '*'))

输出:

*******hello********

(4).np.char.capitalize()-------函数返回字符串的副本,其中第一个字母大写

扫描二维码关注公众号,回复: 1789286 查看本文章
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]

arcsinarccos,和arctan函数返回给定角度的sincostan的反三角函数。 这些函数的结果可以通过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)  。 换句话说,标准差是方差的平方根

 

猜你喜欢

转载自www.cnblogs.com/qianshuixianyu/p/9245357.html