Numpy基本方法总结

来源:互联网 发布:sql中使用sql prompt 编辑:程序博客网 时间:2024/05/15 23:55

Numpy基本方法

主要从一下几方面总结Numpy的基本方法

1、数组方法

2、数组属性

3、矩阵方法

4、多项式

5、线性代数

6、概率分布


1、数组方法

1.1  创建数组:arange()、zeros()、ones()等方法可以直接创建数组,通过array()可以创建一维或多维数组,函数参数是列表等。

示例1:

import numpy as npa = np.arange(12)print type(a)print ali = [1, 2, 3, 4]b = np.array(li)print type(b)print bprint type(li)print li

输出:

<type 'numpy.ndarray'>[ 0  1  2  3  4  5  6  7  8  9 10 11]<type 'numpy.ndarray'>[1 2 3 4]<type 'list'>[1, 2, 3, 4]

1.2  获取数组元素:获取数组元素类似于传统C语言用法。

示例2:

a = np.arange(12)b = a.reshape(3, 4)print bprint b[0]print b[0, 0]

输出:

[[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11]][0 1 2 3]0

1.3  数组变形:通过reshape()、shape()、resize()函数可以改变数组形状。

示例3:

a = np.arange(12)print aprint a.shapeb = a.reshape(3, 4)print ba.shape = (3, 4)print a
输出:

[ 0  1  2  3  4  5  6  7  8  9 10 11](12L,)[[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11]][[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11]]

1.4  数组拼接:通过concatenate()、hstack()、vstack()可以合并数组。

示例4:

a = np.arange(12)print ab = a.reshape(3, 4)a.shape = (3, 4)print aprint bd = np.concatenate((a, b), axis=0)d_1 = np.vstack((a, b))e = np.concatenate((a, b), axis=1)e_1 = np.hstack((a, b))print dprint d_1print eprint e_1
输出:

[ 0  1  2  3  4  5  6  7  8  9 10 11][[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11]][[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11]][[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11] [ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11]][[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11] [ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11]][[ 0  1  2  3  0  1  2  3] [ 4  5  6  7  4  5  6  7] [ 8  9 10 11  8  9 10 11]][[ 0  1  2  3  0  1  2  3] [ 4  5  6  7  4  5  6  7] [ 8  9 10 11  8  9 10 11]]

1.5  数组转list:可以调用tolist()函数将数组转化为list

示例5:

l = [1, 2, 3, 4]print la = np.array(l)print type(a)print ab = a.tolist()print type(b)print b

输出:

[1, 2, 3, 4]<type 'numpy.ndarray'>[1 2 3 4]<type 'list'>[1, 2, 3, 4]

1.6  数组排序:列排列np.msort(a),行排列np.sort(a),np.argsort(a)排序后返回下标

示例6:

l = [3, 2, 1, 4]a = np.array(l)print aprint a.shapeprint np.msort(a)print np.sort(a)print np.argsort(a)a.shape = (2, 2)print aprint np.msort(a)print np.sort(a)

输出:

[1 2 3 4][1 2 3 4][2 1 0 3][[3 2] [1 4]][[1 2] [3 4]][[2 3] [1 4]]

1.7  类型转换: 采用astype()函数可以得到不同类型的数组

示例7:

a = np.arange(12)print a.dtypeprint ab = a.astype(dtype='float32')print b.dtypeprint b

输出:

int32[ 0  1  2  3  4  5  6  7  8  9 10 11]float32[  0.   1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.]

1.8  最大最小元素及下标:需调用max, min, argmin, argmax

示例8:

l = [3, 1, 4, 2]a = np.array(l)print aprint a.max()print a.min()print np.argmax(a)print np.argmin(a)

输出:

[3 1 4 2]4121

1.9  其它函数操作:指数exp()、求余mod()、平方根sqrt()、对数log()、均值mean()、点积dot()、数组元素乘积prod()、数组元素符号sign()

示例9:

l = [2, 1, 4, 3]a = np.array(l)print ab = np.exp(a)print bc = np.sqrt(a)print cd = np.log(a)print de = np.mean(a)print ef = np.mod(a, 2)print fg = np.prod(a)print gh = np.sign(a)print hi = np.dot(a, a)print i

输出:

[2 1 4 3][  7.3890561    2.71828183  54.59815003  20.08553692][ 1.41421356  1.          2.          1.73205081][ 0.69314718  0.          1.38629436  1.09861229]2.5[0 1 0 1]24[1 1 1 1]30

2、数组属性

2.1  数组各个维度大小: 调用shape()函数返回数组各个维度的大小

2.2  数组维度: 调用ndim()返回数组维度总数

2.3  数组元素个数: 调用size()返回数组元素个数

2.4  数组元素覆盖: 调用flat函数改变数组元素

2.5  数组转置: 调用a.T获取数组的转置

示例10:

a = np.arange(12)print aprint a.ndimprint a.shapeprint a.sizeb = a.reshape((3, 4))print bprint b.ndimprint b.shapeprint b.sizea.flat = 1print al = [1, 2, 3, 4]a = np.array(l)a.shape = (2, 2)print ab = a.Tprint b

输出:

[ 0  1  2  3  4  5  6  7  8  9 10 11]1(12L,)12[[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11]]2(3L, 4L)12[1 1 1 1 1 1 1 1 1 1 1 1][[1 2] [3 4]][[1 3] [2 4]]

3、矩阵方法

3.1  创建矩阵:np.mat(‘…’)通过字符串格式创建,np.mat(a)通过数组创建,也可用matrix或bmat函数创建
3.2  创建n*n维单位矩阵:np.eye(n)
3.3  矩阵的转置:A.T
3.4  矩阵的逆矩阵:A.I
3.5  计算协方差矩阵:np.cov(x),np.cov(x,y)
3.6  计算矩阵的迹(对角线元素和):a.trace()
3.7  相关系数:np.corrcoef(x,y)
3.8  得到对角线元素:a.diagonal()


4、多项式

4.1  多项式拟合:poly= np.polyfit(x,a,n),拟合点集a得到n级多项式,其中x为横轴长度,返回多项式的系数
4.2  多项式求导:np.polyder(poly),返回导函数的系数
4.3  多项式n阶求导:多项式.deriv(m = n)
4.4  多项式求根:np.roots(poly)
4.5  多项式在某点上的值:np.polyval(poly,x[n]),返回poly多项式在横轴点上x[n]上的值
4.6  两个多项式做差运算: np.polysub(a,b)


5、线性代数

5.1  估计线性模型中的系数:a=np.linalg.lstsq(x,b),有b=a*x
5.2  求方阵的逆矩阵:np.linalg.inv(A)
5.3  求广义逆矩阵:np.linalg.pinv(A)
5.4  求矩阵的行列式:np.linalg.det(A)
5.5  解形如AX=b的线性方程组:np.linalg.solve(A,b)
5.6  求矩阵的特征值:np.linalg.eigvals(A)
5.7  求特征值和特征向量:np.linalg.eig(A)
5.8  Svd分解:np.linalg.svd(A)


6、概率分布

6.1  随机二项分布:np.random.binomial(n,p,size=…),其中n,p,size分别是每轮试验次数、概率、轮数

6.2  随机超几何分布:np.random.hypergeometric(n1,n2,n,size=…),其中参数意义分别是物件1总量、物件2总量、每次采样数、试验次数

6.3  随机正态分布:np.random.normal(均值,标准差,N)

6.4  随机对数正态分布:np.random.lognormal(mean,sigma,N)

示例11:

a = np.random.binomial(size=(3, 4),                       n=1,                       p=0.5)print ab = np.random.normal(0, 1, size=(3, 4))print b

输出:

[[0 0 0 1] [1 0 0 0] [0 1 1 1]][[ 2.07790996 -0.89206587  0.21539508 -0.55991929] [ 0.21780657 -0.97900422  0.28343882  0.20154116] [ 0.31541829  1.42008666 -0.37606728  0.05134718]]

参考资料:http://blog.csdn.net/blog_empire/article/details/39298557


原创粉丝点击