NumPy快餐教程(1) - 如何生成多維數(shù)組

NumPy快餐教程(1) - 如何生成多維數(shù)組

Python現(xiàn)在是最熱門的人工智能語言,各種工具的支持如Google的Tensorflow麸祷,都是首選支持Python的。
但是,與R語言不同离咐,Python語言設(shè)計時,并沒有考慮對于矩陣運算奉件,統(tǒng)計計算等功能做專項支持宵蛀。于是我們需要NumPy庫來補足這一能力上的不足。
NumPy是Python的著名擴展庫县貌,相當于Python中的MATLAB术陶。

如何生成多維數(shù)組

初識ndarray多維數(shù)組

在算法中我們最經(jīng)常用到的就是矩陣,我們就從矩陣開始說起吧煤痕。
NumPy中梧宫,使用二維的多維數(shù)組ndarray來存儲矩陣。

例:

a3 = np.array([[1,0],[0,1]])

會生成這樣一個多維數(shù)組對象

array([[1, 0],
       [0, 1]])

生成數(shù)組序列

通過開始值摆碉、結(jié)束值和步長值生成數(shù)組序列 - arange

可以通過arange函數(shù)來生成指定開始值祟敛,結(jié)束值和步長值的一維數(shù)組。請注意兆解,結(jié)束值并不包含在序列中馆铁,也就是說結(jié)束值是開區(qū)間。

In [25]: a4 = np.arange(1,10,1)

In [26]: a4
Out[26]: array([1, 2, 3, 4, 5, 6, 7, 8, 9])

線性序列 - linspace

與arange類似锅睛,linspace通過給定初值埠巨、終值和元素個數(shù)來生成序列。是否包含終值可以通過endpoint屬性來設(shè)置现拒。

例:

In [37]: a8 = np.linspace(1,10,10,endpoint=True)

In [38]: a8
Out[38]: array([  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.])

等比序列 - logspace

除了線性的等差數(shù)列辣垒,我們也可以通過等比數(shù)列的方式來生成一維數(shù)組。
默認是以10的n次方為參數(shù)印蔬,比如logspace(0,4,3)的意思是勋桶,初值為10的0次方,即1,終值是10的4次方例驹,即100捐韩,一共生成3個值。

例鹃锈,生成[1,100,10000]

In [47]: a9 = np.logspace(0,4,3)

In [48]: a9
Out[48]: array([  1.00000000e+00,   1.00000000e+02,   1.00000000e+04])

我們當然也可以修改基數(shù)荤胁,比如改成3:

In [53]: a10 = np.logspace(1,5,3,base=3)

In [54]: a10
Out[54]: array([   3.,   27.,  243.])

改變多維數(shù)組的形狀

如果有一個一維數(shù)組要轉(zhuǎn)為多維數(shù)組,可以通過修改shape屬性來實現(xiàn)屎债。

我們可以先將數(shù)據(jù)存在一維數(shù)組中仅政,可以用列表或者元組來生成一維數(shù)組,它們是等價的:
例:

In [2]: a1 = np.array([1,2,3,4])

In [3]: a1
Out[3]: array([1, 2, 3, 4])

In [4]: a2 = np.array((1,0,0,1))

In [5]: a2
Out[5]: array([1, 0, 0, 1])

我們通過shape屬性來查看一個數(shù)組的形狀:

In [14]: a1.shape
Out[14]: (4,)

In [15]: a2.shape
Out[15]: (4,)

shape屬性是可以直接修改的盆驹,比如我們想把上面的a1改成2 x 2的矩陣圆丹,就直接改shape值就是了:

In [16]: a1.shape = 2,2

In [17]: a1
Out[17]: 
array([[1, 2],
       [3, 4]])

如果能確定一個軸,另一個可以賦-1讓系統(tǒng)自己去算躯喇。
例:

In [18]: a2.shape= 2,-1

In [19]: a2
Out[19]: 
array([[1, 0],
       [0, 1]])

如果想保持這個數(shù)組不變运褪,生成一個形狀改變的新數(shù)組,可以調(diào)用reshape方法玖瘸。
例:我們將一個25個元素的數(shù)組生成一個5x5的新數(shù)組

In [59]: a11 = np.linspace(1,100,25)

In [60]: a11
Out[60]: 
array([   1.   ,    5.125,    9.25 ,   13.375,   17.5  ,   21.625,
         25.75 ,   29.875,   34.   ,   38.125,   42.25 ,   46.375,
         50.5  ,   54.625,   58.75 ,   62.875,   67.   ,   71.125,
         75.25 ,   79.375,   83.5  ,   87.625,   91.75 ,   95.875,  100.   ])

In [61]: a12 = a11.reshape(5,-1)

In [62]: a12
Out[62]: 
array([[   1.   ,    5.125,    9.25 ,   13.375,   17.5  ],
       [  21.625,   25.75 ,   29.875,   34.   ,   38.125],
       [  42.25 ,   46.375,   50.5  ,   54.625,   58.75 ],
       [  62.875,   67.   ,   71.125,   75.25 ,   79.375],
       [  83.5  ,   87.625,   91.75 ,   95.875,  100.   ]])

直接生成多維數(shù)組

生成全0的數(shù)組

zeros生成全是0的數(shù)組,第一個參數(shù)是shape

例:

In [65]: np.zeros((10,10))
Out[65]: 
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

生成全是1的數(shù)組

例:

In [66]: np.ones((5,5))
Out[66]: 
array([[ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.]])

只生成空數(shù)組

empty不賦初值辛辨,是最快速的方法

例:

In [67]: np.empty((3,3))
Out[67]: 
array([[  1.   ,   2.125,   3.25 ],
       [  4.375,   5.5  ,   6.625],
       [  7.75 ,   8.875,  10.   ]])

通過函數(shù)來生成數(shù)組

通過fromfunction函數(shù)可以通過一個函數(shù)來生成想要的數(shù)組登夫。

例别惦,生成九九乘法表:

In [125]: def mul2(x,y):
     ...:     return (x+1)*(y+1)
     ...: 

In [126]: np.fromfunction(mul2,(9,9))
Out[126]: 
array([[  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.],
       [  2.,   4.,   6.,   8.,  10.,  12.,  14.,  16.,  18.],
       [  3.,   6.,   9.,  12.,  15.,  18.,  21.,  24.,  27.],
       [  4.,   8.,  12.,  16.,  20.,  24.,  28.,  32.,  36.],
       [  5.,  10.,  15.,  20.,  25.,  30.,  35.,  40.,  45.],
       [  6.,  12.,  18.,  24.,  30.,  36.,  42.,  48.,  54.],
       [  7.,  14.,  21.,  28.,  35.,  42.,  49.,  56.,  63.],
       [  8.,  16.,  24.,  32.,  40.,  48.,  56.,  64.,  72.],
       [  9.,  18.,  27.,  36.,  45.,  54.,  63.,  72.,  81.]])
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蔑匣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棕诵,老刑警劉巖裁良,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異校套,居然都是意外死亡价脾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門笛匙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侨把,“玉大人,你說我怎么就攤上這事妹孙∏锉” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵蠢正,是天一觀的道長骇笔。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么笨触? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任懦傍,我火速辦了婚禮,結(jié)果婚禮上旭旭,老公的妹妹穿的比我還像新娘谎脯。我一直安慰自己,他們只是感情好持寄,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布源梭。 她就那樣靜靜地躺著,像睡著了一般稍味。 火紅的嫁衣襯著肌膚如雪废麻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天模庐,我揣著相機與錄音烛愧,去河邊找鬼。 笑死掂碱,一個胖子當著我的面吹牛怜姿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疼燥,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沧卢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了醉者?” 一聲冷哼從身側(cè)響起但狭,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撬即,沒想到半個月后立磁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡剥槐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年唱歧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粒竖。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡迈喉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出温圆,到底是詐尸還是另有隱情挨摸,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布岁歉,位于F島的核電站得运,受9級特大地震影響膝蜈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜熔掺,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一饱搏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧置逻,春花似錦推沸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恨锚,卻和暖如春宇驾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猴伶。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工课舍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人他挎。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓筝尾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親办桨。 傳聞我的和親對象是個殘疾皇子筹淫,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容