NumPy快速入门

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]: ll

Out[4]: array([4, 5, 6])
  • 通过list构建array
In[5]: pylist = [0,1,2]
In[6]: jj = array(pylist)
In[7]: jj

Out[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]: marray

Out[102]: 
array([[1, 2, 3],
       [4, 5, 6]])

array基本操作

以marray的array来说

In[102]: marray

Out[102]: 
array([[1, 2, 3],
       [4, 5, 6]])
  • array索引
In[104]: marray[0][2]
Out[104]: 3
  • array的对应相乘
In[105]: marray*2

Out[105]: 
array([[ 2,  4,  6],
       [ 8, 10, 12]])

In[106]: marray*marray

Out[106]: 
array([[ 1,  4,  9],
       [16, 25, 36]])


构建矩阵matrix

  • 同样可由tuple和list构建matrix
#由list构建
In[84]: mm = mat(pylist)
In[85]: mm

Out[85]: matrix([[0, 1, 2]])

#由tuple构建
In[107]: oo = mat(yuanzu)
In[108]: oo

Out[108]: matrix([[4, 5, 6]])

  • 由array构建matrix
In[109]: pp = mat(marray)
In[110]: pp
Out[110]: 
matrix([[1, 2, 3],
        [4, 5, 6]])

matrix基本操作

对下面的pp矩阵来操作

In[110]: pp
Out[110]: 
matrix([[1, 2, 3],
        [4, 5, 6]])
  • 查看维数.shape
In[111]: pp.shape
Out[111]: (2L, 3L) #两行三列的矩阵
  • 取值,可以使用分片方法
In[116]: pp[1,2] #取第二行第三列元素
Out[116]: 6

In[115]: pp[1,:] #取第二行,所有列
Out[115]: matrix([[4, 5, 6]])

  • 转置.T
In[112]: pp.T
Out[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]) #构建一个新的matrix
In[120]: qq

Out[120]: matrix([[2, 1, 3]])


In[121]: qq.sort() #进行递增排序,改变原来数据
In[122]: qq

Out[122]: matrix([[1, 2, 3]])
  • 获得矩阵中每个元素的排序序号
In[126]: cc = mat([[3,1,4],[2,3,4]]) #重新构建一个矩阵
In[127]: cc

Out[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*marray

Out[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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 来源:NumPy Tutorial - TutorialsPoint 译者:飞龙 协议:CC BY-NC-SA 4...
    布客飞龙阅读 32,660评论 6 96
  • 一.NumPy的引入 标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列...
    wlj1107阅读 999评论 0 2
  • 原英文文档 encoding:utf-8 1.导入包 2.显示版本,打印配置信息 3.创建一个size为10值为0...
    charmler阅读 2,270评论 0 1
  • 先决条件 在阅读这个教程之前,你多少需要知道点python。如果你想从新回忆下,请看看Python Tutoria...
    舒map阅读 2,563评论 1 13
  • NumPy是Python中关于科学计算的一个类库,在这里简单介绍一下。 来源:https://docs.scipy...
    灰太狼_black阅读 1,220评论 0 5