Python学习笔记——python numpy常用函数

    xiaoxiao2022-07-03  146

    numpy 常用函数按功能归纳:

    一、创建数据

    1、创建数组:

    (1)array:np.array

            import numpy as np

            np.array([[1,2,3],[2,3,4]])

    a=([1,2,3],[3,2,1])

    np.array(a)

    np.array(list('abcsafdfasfdasdfg'))

    生成指定元素类型的数组:设置dtype属性:

           X=numpy.array([1,2,3,4],dtype=numpy.int64)

           X=numpy.array([1,2,3,4],dtype=numpy.float64)

    使用astype复制数组,并转换类型

           X=numpy.array([1,2.6,3],dtype=numpy.float64)

           Y=x.astype(numpy.int32)

    将字符串元素转换为数值元素

           X=numpy.array([‘1’,’2’,’3’],dtype=numpy.dstring_)

           Y=x.astype(numpy.int32)

    使用其他数组中的数据类型作为参数

           X=numpy.array([1,2,3.4].dtype=numpy.float32)

           Y=numpy.arange(3,dtype=numpy.int32)

           Y.astype(x.dtype)

    Ndarray的矢量化计算

           X=numpy.array([1,2,3])

           X*2

           X>2

           Y=numpy.array([3,4,5])

           X+Y

           X>Y

    (2)zeros:np.zeros,  ones:np.ones

    A=np.zeros(3) #一行三列

    B=np.zeros((3,4))

    C=np.zeros_like(B) #按照B的shape创建数组。

    打印数组元素类型

    print(‘数组类型:’,type(B))

    print(‘数组元素类型:’,B.dtype)

    print(‘数组形状:’,B.shape)

    (3)empty和empty_like:创建空数组,空数据中的值并不为0,而是未初始化的随机值

    a=np.empty(5)

    b=np.empty((3,4))

    c=np.empty_like(b)

    (3)arange :起始值,终值,步长(用法与range类似)。

                  data=np.arange(1,41,2)

                  data.reshape((4,5))  #将其形状改变为(4,5)分4部分,每份5个

    (4)linspace :指定起始值、终值和元素个数创建一维数组(等差数列)。

                  np.linspace(0,20,100)

    (5)logspace:指定起始值、终值和元素个数创建一维数组(等比数列)

                  np.logsapce(1,2,20)

    (6)eye(I):创建对角矩阵数组(对角线为1,其余为0)

                  np.eye(2) #二阶方阵

                  np.eye(3,4) #矩阵

    (7)frombuffer,fromstring,fromfile等函数可以从字节序列创建数组

                  s='abcdefg'

                  np.fromstring(s,dtype=numpy.int8)

    (8)fromfunction函数的第一个参数计算的每个数组元素的函数,第二个参数为数组的大小(shape)

           def func2(i,j):

               return(i+1)*(j+1)

           np.fromfunction(func2,(9,9))

    2、查看数组:

          dim,  dtype,   shape

     

    3、数组的索引和切片(切片为视图非复制;复制.copy())

    一维数组的索引:与python的列表索引功能相似

    (1)多维数组的索引:

           arr[r1:r2,c1:c2]

           arr[1,1]等价于arr[1][1]

           [:]代表某个维度的数据

                  x=numpy.array([[1,2,3],[2,3,4],[3,4,5]])

                  x[0]  #[1,2,3]

                  x[0][1]  #2

                  x[0,1]  #同x[0][1]

     

                  x=numpy.array([[[1,2],[2,3]],[[5,6],[7,8]]])

                  x[0]  #[[1,2],[3,4]]

                  y=x[0].copy()

                  z=x[0]  #未生成一个副本,是视图

               y[0,0]  #1

                  y[0,0]=0

                  y #[[0,2],[3,4]]

                  z[0,0]=-1

                  x[0]  #[[-1,2],[3,4]]

                  z #[[-1,2],[3,4]]

    (2)ndarray的切片

    x=numpy.array([1,2,3,4,5])

    x[1:3]  #[2,3] 右边开区间]

    x[:3]  #[1,2,3] 左边默认为0

    x[1:]  #[2,3,4,5]

    x[0:4:2]  #[1,3] 下标递增2

     

    x =numpy.array([[1,2],[3,4],[5,6]])

    printx[:2] # [[1 2],[3 4]]

    printx[:2,:1] # [[1],[3]]

     

    x[:2,:1]=0  #用标量赋值

    print(x)  #[[0,2],[0,4],[5,6]]

    x[:2,:1]=[[8],[6]]  #用数组赋值

     

    (2)narray数组的布尔索引:使用布尔数组作为索引。

    arr[condition],condition为一个条件/多个条件组成的布尔数组。

    x=numpy.array([3,2,3,1,3,0])

    y=numpy.array([True,False,True,False,True,False])

    x[y]  #[3,3,3]

    x[y==False]  #[2,1,0]

    x>=3  #[True False True False True False]

    x[~(x>3)]  #[2,1,0]

    (x==2)|(x==1)  #[False True False True Flase Flase]

    x[(x==2)|(x==1)]  #[2,1]

    x[(x==2)|(x==1)]=0

    printx  #[3 0 3 0 3 0]

     

    (3)花式索引:使用整型数组作为索引

    x=numpy.array([1,2,3,4,5,6])

    x[[0,1,2]]  #[1,2,3] 相当于列表中的索引

    x[[-1,-2,-3]]  #[6,5,4] 相当于列表中的索引

     

    x=numpy.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])

    x[[0,2]]  # [[1,2,3,4],[ 9,10,11,12]]  相当于列表中的索引

    x[[0,2],[0,2]]#[1,12]  相当于x[0][0]=1,x[2][2]=12

    x[[0,2]][:,[0,3]]  #[[0,2]]先取x的第一个和第二个元素: [[1,2,3,4],[ 9,10,11,12]],[:,[0,1]]取所有行的,第一列和第三列元素:[[1,3],[9,11]]

     

    numpy.ix()函数,提取

    numpy.ix([0,1],[0,1])#取【第一行,第二行】,【第一列,第二列】 :[[1,2,3,4],[5,6,7,8]]

     

    x[[0,1],[0,1]]=[0,0]

    x  #[[0,2,3,4],[5,0,7,8],[9,10,11,12]]

     

    (4)ndarray数组的转置和轴对换、

    数组的转置/轴对换只会返回源数据的一个视图,不会对源数据进行修改

    k=numpy.arange(9)

    m=k.reshape((3,3))#改变数组的shape复制生成2维,每个维度长度为3的数组。

     

    计算矩阵的内积xTx

    numpy.dot(m,m.T) #numpy.dot 点乘

     

    高维数组的轴对象

    k=numpy.arange(8).reshape(2,2,2)  #[[[0 1],[2 3]],[[4 5],[6 7]]]

    k[1][0][0]  #[4]

     

    轴变换transpose参数:由轴编号组成的元组(三维数组不好理解,直接百度看图解)

    m=k.transpose((1,0,2)) #m[y][x][z]=k[x][y][z]

     

    4、ndarray通用函数

    通用函数(ufunc)是一种对ndarray中的数据执行元素级运算的函数

        常用的计算函数:

            abs(计算绝对值),fads

            sqrt(平方根),square(平方的),exp(指数函数),log,log*,loglp

            sign,ceiling,floor,modf

            isnan(Not a Number),isfinite,isinf

            cos,sin,tan,arccos,arcsin,arctan

     

            add(加),substract(减),multiply,divide,power

            maximum,minimum,mod,copysign

            greater,greater_equal(大于等于),less,less_equal

     

    5、产生数组

        np.meshgrid

        np.linspace(start,end,Number)

        np.arange(start,end,step)

     

    6、逻辑操作

        np.where(逻辑表达式,a,b)#表达式为真返回a,为假返回b)

     

    7、统计

        sum,mean,std,var

        min,max,argmin(返回最大值,对应的是下标),argmax

        cumsum(累积和),cumprod(累积的乘积)

     

    8、排序相关

        sort(axis)

        unique()

     

    9、随机数生成

        numpy.random

        简单的随机数据

            rand(d0,d1,...,dn) #均匀分布的数

            randn(d0,d1,...,dn) #标准正态分布

               sigma*np.random.randn(...)+mu

            randint(low[,high,size])

            random_integers(low[,high,size])

            choice(a[,size,replace,p])

     

    10、排列

        shuffle(x)

        permutation(x)

     

    11、分布:

        normal([loc,scale,size])  正态(高斯)分布

        beta(a,b[,size])  贝塔分布样本,在[0,1]内

        binomial(n,p[,size])  二项分布的样本

        chisquare(df[,size])  卡方分布样本

        lognormal([mean,sigma,size])  对数正态分布

        exponential([scale,size])  指数分布

        f(dfnum,dfden[,size])  F分布样本

        multivariate_normal(mean,cov[,size])  多元正太分布

    最新回复(0)