Numpy

矩阵与数组

In [3]: from numpy import *

In [4]: a = random.rand(4,3)

In [5]: a
Out[5]: 
array([[ 0.18283831,  0.21897507,  0.06911263],
       [ 0.56010641,  0.44530748,  0.96900526],
       [ 0.07938149,  0.83705278,  0.20325507],
       [ 0.90471882,  0.53764717,  0.33122263]])

In [6]: mat(a)
Out[6]: 
matrix([[ 0.18283831,  0.21897507,  0.06911263],
        [ 0.56010641,  0.44530748,  0.96900526],
        [ 0.07938149,  0.83705278,  0.20325507],
        [ 0.90471882,  0.53764717,  0.33122263]])

In [7]: type(a)
Out[7]: numpy.ndarray # 数组类型

In [8]: a = mat(a)

In [9]: type(a)
Out[9]: numpy.matrixlib.defmatrix.matrix # 矩阵类型

In [10]: a
Out[10]: 
matrix([[ 0.18283831,  0.21897507,  0.06911263],
        [ 0.56010641,  0.44530748,  0.96900526],
        [ 0.07938149,  0.83705278,  0.20325507],
        [ 0.90471882,  0.53764717,  0.33122263]])

In [11]: a.I # 矩阵求逆(没有使用方阵,这里是伪逆矩阵)
Out[11]: 
matrix([[ 0.17987522, -0.31261057, -0.73297284,  1.32681177],
        [ 0.19891349, -0.29239699,  1.27986334,  0.02852485],
        [-0.22442968,  1.3461827 , -0.16030736, -0.77399272]])

In [21]: a * a.I # 因为不是方阵,所以没有输出单位阵
Out[21]: 
matrix([[ 0.06093425, -0.02814661,  0.13516338,  0.19534558],
        [-0.02814661,  0.99915636,  0.00405125,  0.00585509],
        [ 0.13516338,  0.00405125,  0.98054541, -0.02811685],
        [ 0.19534558,  0.00585509, -0.02811685,  0.95936398]])
In [1]: from numpy import *

In [4]: a = random.rand(4,4)

In [5]: a
Out[5]: 
array([[ 0.71411637,  0.47290226,  0.55636164,  0.20517478],
       [ 0.3554218 ,  0.90012918,  0.9086697 ,  0.14233483],
       [ 0.33007245,  0.69314144,  0.40207699,  0.07290092],
       [ 0.20740437,  0.83340077,  0.15481733,  0.11737046]])

In [7]: a = mat(a)

In [8]: a * a.I # 结果有误差
Out[8]: 
matrix([[  1.00000000e+00,   0.00000000e+00,  -4.44089210e-16,   1.11022302e-16],
        [ -1.11022302e-16,   1.00000000e+00,   0.00000000e+00,   3.33066907e-16],
        [ -5.55111512e-17,  -2.22044605e-16,   1.00000000e+00,  -1.11022302e-16],
        [ -5.55111512e-17,   0.00000000e+00,   0.00000000e+00,   1.00000000e+00]])

In [9]: eye(4) # 单位阵,array类型
Out[9]: 
array([[ 1.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])

In [13]: myEye = a * a.I

In [14]: myEye - eye(4) # matrix可以直接与array运算
Out[14]: 
matrix([[  0.00000000e+00,   0.00000000e+00,  -4.44089210e-16,   1.11022302e-16],
        [ -1.11022302e-16,  -2.22044605e-16,   0.00000000e+00,   3.33066907e-16],
        [ -5.55111512e-17,  -2.22044605e-16,   0.00000000e+00,  -1.11022302e-16],
        [ -5.55111512e-17,   0.00000000e+00,   0.00000000e+00,   0.00000000e+00]])

In [15]: type(myEye)
Out[15]: numpy.matrixlib.defmatrix.matrix

tile 函数

像铺瓷砖一样扩展数据

In [18]: a = random.rand(2,2)

In [19]: a
Out[19]: 
array([[ 0.69860728,  0.35574496],
       [ 0.80746093,  0.20802703]])

In [20]: tile(a,(2,2)) # 以a为子矩阵扩展数据
Out[20]: 
array([[ 0.69860728,  0.35574496,  0.69860728,  0.35574496],
       [ 0.80746093,  0.20802703,  0.80746093,  0.20802703],
       [ 0.69860728,  0.35574496,  0.69860728,  0.35574496],
       [ 0.80746093,  0.20802703,  0.80746093,  0.20802703]])

argsort函数

返回数组值从小到大的索引值,与原数组shape相同

In [43]: a = random.rand(1,5)

In [44]: a
Out[44]: array([[ 0.13951597,  0.07581534,  0.6957919 ,  0.2080221 ,  0.8629544 ]])

In [45]: a.argsort()
Out[45]: array([[1, 0, 3, 2, 4]]) # 升序排列数组,返回索引
In [47]: a = random.rand(4,2)

In [48]: a
Out[48]: 
array([[ 0.18149948,  0.57567855],
       [ 0.00914879,  0.14953625],
       [ 0.48911966,  0.75737031],
       [ 0.49874594,  0.07773392]])

In [50]: b=a.sum(axis=1) # 按行加和

In [51]: b
Out[51]: array([ 0.75717803,  0.15868504,  1.24648996,  0.57647986])

In [52]: c=a.sum(axis=0) # 按列加和

In [53]: c
Out[53]: array([ 1.17851386,  1.56031903])

In [54]: a.argsort(axis=0) # 按列排序,元素在一列中所占的位置
Out[54]: 
array([[1, 3],
       [0, 1],
       [2, 0],
       [3, 2]])

In [55]: a.argsort(axis=1) # 按行排序,元素在一行中所占的位置
Out[55]: 
array([[0, 1],
       [0, 1],
       [0, 1],
       [1, 0]])

In [56]: a.argsort() # 默认行排序
Out[56]: 
array([[0, 1],
       [0, 1],
       [0, 1],
       [1, 0]])

Numpy.argsort

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

推荐阅读更多精彩内容