zoukankan      html  css  js  c++  java
  • NumPy-----函数

    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 ('
    ')
    
    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()-------函数返回字符串的副本,其中第一个字母大写

    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
    how are you?') )

    输出:

    ['hello', 'how are you?']

    ' '' '' '都会用作换行符。

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

    输出:

    x88x85x93x93x96
    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  ('
    '  )
    print  ('数组中角度的余弦值:'  )
    print (np.cos(a*np.pi/180)  )
    print  ('
    '  )
    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  ('
    ' ) 
    print  ('计算角度的反正弦,返回值以弧度为单位:')
    inv = np.arcsin(sin)  
    print (inv)
    print ( '
    '  )
    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  ('
    '  )
    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  ('
    ')  
    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  ('
    '  )
    print ( '调用 real() 函数:'  )
    print (np.real(a)  )
    print ( '
    '  )
    print  ('调用 imag() 函数:'  )
    print (np.imag(a)  )
    print  ('
    '  )
    print  ('调用 conj() 函数:'  )
    print (np.conj(a)  )
    print  ('
    '  )
    print ( '调用 angle() 函数:'  )
    print( np.angle(a)  )
    print  ('
    '  )
    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)  。 换句话说,标准差是方差的平方根

     
  • 相关阅读:
    c# proto文件导入报错 File not found. Import "common.proto" was not found or had errors.
    拓端tecdat|Python用稀疏、高斯随机投影和主成分分析PCA对MNIST手写数字数据进行降维可视化
    拓端tecdat|上海无印良品地理空间分布特征与选址策略可视化研究
    拓端tecdat|Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
    拓端tecdat|R语言分布滞后非线性模型(DLNM)空气污染研究温度对死亡率影响建模应用
    拓端tecdat|R语言用AR,MA,ARIMA 模型进行时间序列预测
    拓端tecdat|R语言广义二次跳跃、非线性跳跃扩散过程转移函数密度的估计及其应用
    拓端tecdat|Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
    拓端tecdat|基于机器学习的印度肝脏病诊断分析
    拓端tecdat|R语言Metropolis Hastings采样和贝叶斯泊松回归Poisson模型
  • 原文地址:https://www.cnblogs.com/qianshuixianyu/p/9245357.html
Copyright © 2011-2022 走看看