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

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])  多元正太分布

你可能感兴趣的:(python)