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
- numpy基本方法总结
- numpy基本方法总结
- Numpy基本方法总结
- numpy基本方法总结
- NumPy基本方法
- numpy方法总结
- Numpy 常用方法总结
- numpy矩阵基本操作总结
- python-numpy一些方法总结
- python-numpy一些方法总结
- python-numpy一些方法总结
- python-numpy一些方法总结
- numpy矩阵的基本方法和属性
- Numpy 总结
- numpy的基本介绍
- NumPy 基本运算
- NumPy中的基本数据类型
- NumPy之一:基本操作
- 开发商亏钱都要买地的时候,你该买房吗?
- 15个常用的javaScript正则表达式
- 全部exercise的总结
- linux源码解析-copy_process函数
- 常用工具集锦
- Numpy基本方法总结
- 用C语言实现静态顺序表
- 单链表的创建、遍历、测长、插入、删除、访问、排序、逆序
- Spring中的常用注解
- openstack/manila的基本概念
- Android 热修复(最新)— 流行方案分析
- php解析json文件时为何不出任何效果?
- LeetCode OJ1
- maven编译报错source 1.5 中不支持 switch 中存在字符串