NumPy快速入门
来源:互联网 发布:淘宝卖家怎么处理违规 编辑:程序博客网 时间:2024/06/06 03:05
Python 2.7
IPython 4.1.2
关于Numpy
- Numpy是Python的一个矩阵类型,提供大量矩阵处理函数,内部通过C实现。
- 包含两种数据结构,数组array和矩阵matrix,其实就是array而已
构建数组array
- 通过tuple构建array
In[1]: from numpy import *In[2]: yuanzu = (4,5,6)In[3]: ll = array(yuanzu)In[4]: llOut[4]: array([4, 5, 6])
- 通过list构建array
In[5]: pylist = [0,1,2]In[6]: jj = array(pylist)In[7]: jjOut[7]: array([0, 1, 2])
- 构建多维array
In[95]: pylist1 = [1,2,3]In[96]: pylist2 = [4,5,6]In[100]: marray = array([pylist1,pylist2])In[102]: marrayOut[102]: array([[1, 2, 3], [4, 5, 6]])
array基本操作
以marray的array来说
In[102]: marrayOut[102]: array([[1, 2, 3], [4, 5, 6]])
- array索引
In[104]: marray[0][2]Out[104]: 3
- array的对应相乘
In[105]: marray*2Out[105]: array([[ 2, 4, 6], [ 8, 10, 12]])In[106]: marray*marrayOut[106]: array([[ 1, 4, 9], [16, 25, 36]])
构建矩阵matrix
- 同样可由tuple和list构建matrix
#由list构建In[84]: mm = mat(pylist)In[85]: mmOut[85]: matrix([[0, 1, 2]])#由tuple构建In[107]: oo = mat(yuanzu)In[108]: ooOut[108]: matrix([[4, 5, 6]])
- 由array构建matrix
In[109]: pp = mat(marray)In[110]: ppOut[110]: matrix([[1, 2, 3], [4, 5, 6]])
matrix基本操作
对下面的pp矩阵来操作
In[110]: ppOut[110]: matrix([[1, 2, 3], [4, 5, 6]])
- 查看维数.shape
In[111]: pp.shapeOut[111]: (2L, 3L) #两行三列的矩阵
- 取值,可以使用分片方法
In[116]: pp[1,2] #取第二行第三列元素Out[116]: 6In[115]: pp[1,:] #取第二行,所有列Out[115]: matrix([[4, 5, 6]])
- 转置.T
In[112]: pp.TOut[112]: matrix([[1, 4], [2, 5], [3, 6]])
- 矩阵乘法,注意矩阵乘法的规则,(m,n)*(n,p),对应维数。
In[113]: pp*(pp.T)Out[113]: matrix([[14, 32], [32, 77]])
- 对应元素相乘 multiply(a,b)
In[114]: multiply(pp,pp)Out[114]: matrix([[ 1, 4, 9], [16, 25, 36]])
- 排序sort,注意是原地排序,会改变原始数据,这个和pandas中的index操作不一样
In[119]: qq = mat([2,1,3]) #构建一个新的matrixIn[120]: qqOut[120]: matrix([[2, 1, 3]])In[121]: qq.sort() #进行递增排序,改变原来数据In[122]: qqOut[122]: matrix([[1, 2, 3]])
- 获得矩阵中每个元素的排序序号
In[126]: cc = mat([[3,1,4],[2,3,4]]) #重新构建一个矩阵In[127]: ccOut[127]: matrix([[3, 1, 4], [2, 3, 4]])In[128]: cc.argsort()Out[128]: matrix([[1, 0, 2], [0, 1, 2]], dtype=int64)#比如说[3,1,4]这一行,元素先从小到大排序为[1,3,4],对应1的元素在原本的矩阵中索引应该是1,对应3的索引是0,4的索引是2,所以得出[1,0,2]
array VS matrix
官方建议多使用array
The main advantage of numpy arrays is that they are more general than 2-dimensional matrices. What happens when you want a 3-dimensional array? Then you have to use an ndarray, not a matrix object. Thus, learning to use matrix objects is more work – you have to learn matrix object operations, and ndarray operations.
一句话,matrix应该算是array的一个分支,只是array的二维表示而已,matrix的操作,array都可以完成,值得注意的是,想要完成矩阵相乘,而不是对应相乘,array需要采用dot方法,举个例子
#对应相乘In[129]: marray*marrayOut[129]: array([[ 1, 4, 9], [16, 25, 36]])#矩阵相乘In[130]: marray.dot(marray.T)Out[130]: array([[14, 32], [32, 77]])
总结
If you are willing to give up the visual appeal of numpy matrix product notation, then I think numpy arrays are definitely the way to go.
–也就是,没事多用用array
致谢
利用python进行数据分析.Wes McKinney著
机器学习实战.Peter Harrington著
0 0
- [python]Numpy快速入门
- NumPy快速入门
- NumPy快速入门
- Numpy快速入门
- Numpy快速入门
- python module使用之----Numpy(快速入门)
- Numpy 入门
- numpy入门
- Numpy入门
- numpy:入门
- NumPy-快速处理数据
- NumPy-快速处理数据
- NumPy-快速处理数据
- NumPy-快速处理数据
- NumPy-快速处理数据
- NUMPY快速处理数据
- NumPy-快速处理数据
- NumPy-快速处理数据
- 自己动手写js分享插件 [支持https] (QQ空间,微信,新浪微博。。。)
- 第27篇 linux下布署vpn
- 1012. The Best Rank (25)
- if语句
- CI模型的使用
- NumPy快速入门
- Asp.net前后台代码混编
- 怎么用chrom调试javascript
- 多线程
- ios9微信支付报警告: Snapshotting a view that has not been rendered results in an empty snapshot. Ensure yo
- 图片加载框架对比分析
- MyBatis学习总结(一)配置以及增删改查
- 反射
- android上获得打开相应文件类型的intent