numpy基礎(一)

numpy 基礎簡介

numpy 操作的主要對象是同類型的多維數(shù)組。它是一張表牲平,通常它的元素都是數(shù)字皂贩。并通過正整數(shù)元素索引。在 numpy 中維度稱為軸自沧,軸的數(shù)目稱為 rank 坟奥。

numpy的數(shù)組類被稱為ndarray。別名 array 拇厢。numpy.array 與標準Python庫類 array.array 不同爱谁,后者僅處理一維數(shù)組并提供較少的功能。 ndarray 對象則提供更關鍵的屬性:

  • ndarray.ndim :數(shù)組的軸(維度)的個數(shù)孝偎。
In [1]: import numpy as np
In [17]: a = np.array([1,2,3,4,5])

In [18]: a
Out[18]: array([1, 2, 3, 4, 5])

In [19]: a.ndim
Out[19]: 1
In [9]: a = np.array([[1,2,3,4],[5,6,7,8]])

In [10]: a
Out[10]:
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])

In [11]: a.ndim
Out[11]: 2

In [12]: a = np.array([[1,2,3,4],[5,6,7,8],[12,13,14,15]])

In [13]: a
Out[13]:
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [12, 13, 14, 15]])

In [14]: a.ndim
Out[14]: 2


  • ndarray.shape :數(shù)組的維度访敌。這是一個整數(shù)的元組,表示每個維度中數(shù)組的大小衣盾。對于有n行和m列的矩陣寺旺,shape將是(n,m)。因此势决,shape元組的長度就是rank或維度的個數(shù) ndim阻塑。
In [17]: a
Out[17]:
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [12, 13, 14, 15]])

In [18]: a.shape
Out[18]: (3, 4)

In [19]:
  • ndarray.size:數(shù)組元素的總數(shù)。這等于shape的元素的乘積徽龟。
In [19]: a
Out[19]:
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [12, 13, 14, 15]])

In [20]: a.size
Out[20]: 12

In [21]:

  • ndarray.dtype:一個描述數(shù)組中元素類型的對象叮姑。可以使用標準的Python類型創(chuàng)建或指定dtype。另外NumPy提供它自己的類型传透。例如numpy.int32耘沼、numpy.int16和numpy.float64。
In [24]: a
Out[24]:
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [12, 13, 14, 15]])

In [25]: a.dtype
Out[25]: dtype('int32')

In [26]:

  • ndarray.itemsize:數(shù)組中每個元素的字節(jié)大小朱盐。例如群嗤,元素為 float64 類型的數(shù)組的 itemsize 為8(=64/8),而 complex32 類型的數(shù)組的 itemsize 為4(=32/8)兵琳。它等于 ndarray.dtype.itemsize 狂秘。
In [24]: a
Out[24]:
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [12, 13, 14, 15]])

In [25]: a.dtype
Out[25]: dtype('int32')

In [26]: a.itemsize
Out[26]: 4

In [27]: a.dtype.itemsize
Out[27]: 4

數(shù)組的創(chuàng)建

可以使用 array 函數(shù)從常規(guī)的python列表或元組中創(chuàng)建數(shù)組。得到的數(shù)組類型是從python列表中的元素推導出來的躯肌。
上面的例子大都是從常規(guī)的python列表創(chuàng)建的:


In [39]: a = np.array((1,2,3))

In [40]: a
Out[40]: array([1, 2, 3])

In [41]: a = np.array(((1,2,3),(4,5,6)))

In [42]: a
Out[42]:
array([[1, 2, 3],
       [4, 5, 6]])

結合起來也是可以的:

In [43]: a = np.array([(1,2,3),(4,5,6)])

In [44]: a
Out[44]:
array([[1, 2, 3],
       [4, 5, 6]])

數(shù)組的類型也是可以在創(chuàng)建的時候就指定:


In [2]: a = np.array([[1,2,3],[4,5,6]],dtype=complex)

In [3]: a
Out[3]:
array([[1.+0.j, 2.+0.j, 3.+0.j],
       [4.+0.j, 5.+0.j, 6.+0.j]])

complex 是復數(shù)的意思者春。

通常,數(shù)組的元素最初是未知的清女,但它的大小是已知的钱烟。因此,NumPy提供了幾個函數(shù)來創(chuàng)建具有初始占位符內(nèi)容的數(shù)組嫡丙。這就減少了數(shù)組增長的必要拴袭,因為數(shù)組增長的操作花費很大。

  • 函數(shù) zeros 創(chuàng)建一個由 0 組成的數(shù)組:
In [4]: a = np.zeros((3,4))

In [5]: a
Out[5]:
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])
  • 函數(shù) ones 創(chuàng)建一個由 1 組成的數(shù)組:
In [6]: a = np.ones((3,4))

In [7]: a
Out[7]:
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])
  • 函數(shù) empty 內(nèi)容是隨機的并且取決于存儲器的狀態(tài)曙博。默認情況下拥刻,創(chuàng)建的數(shù)組的dtype是 float64。
In [15]: a
Out[15]:
array([[1.69122046e-306, 1.31996133e-285, 1.32001905e-285],
       [2.22129839e-285, 1.32003829e-285, 1.31963425e-285],
       [1.25972084e-285, 0.00000000e+000, 0.00000000e+000]])

In [16]: a.dtype
Out[16]: dtype('float64')
  • 創(chuàng)建數(shù)字序列父泳,NumPy提供了一個類似于 range 的函數(shù)般哼,該函數(shù)返回數(shù)組而不是列表。
In [21]: np.arange(0,2,0.2)
Out[21]: array([0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8])

In [22]: np.arange(1,5,2)
Out[22]: array([1, 3])

打印數(shù)組

當你打印數(shù)組時尘吗,NumPy以與嵌套列表類似的方式顯示它逝她,但是具有以下布局:

  • 最后一個軸從左到右打印,
  • 倒數(shù)第二個從上到下打印睬捶,
  • 其余的也從上到下打印黔宛,每個切片與下一個用空行分開。

一維數(shù)組被打印為行擒贸、二維為矩陣和三維為矩陣列表臀晃。


In [24]: a
Out[24]: array([1, 3])

In [25]: print(a)
[1 3]

In [26]: a = np.array(([1,2,3],[4,5,6]))

In [27]: print(a)
[[1 2 3]
 [4 5 6]]

In [28]: c = np.arange(24).reshape(2,3,4)

In [29]: print(c)
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

基本操作

數(shù)組上的算術運算符使用元素級別。加減乘除都是每個元素之間的運算介劫。

>>> a = np.array( [20,30,40,50] )
>>> b = np.arange( 4 )
>>> b
array([0, 1, 2, 3])
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10*np.sin(a)
array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])
>>> a<35
array([ True, True, False, False])
  • 一些函數(shù)
In [36]: a
Out[36]:
array([[1, 2, 3],
       [4, 5, 6]])

In [37]: a.max()
Out[37]: 6

In [38]: a.min()
Out[38]: 1

In [39]: a.sum()
Out[39]: 21
  • 默認情況下徽惋,這些操作適用于數(shù)組,就好像它是數(shù)字列表一樣座韵,無論其形狀如何险绘。但是踢京,通過指定 axis 參數(shù),你可以沿著數(shù)組的指定軸應用操作:
In [4]: np.arange(12).reshape(3,4)
Out[4]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

In [5]: a = np.arange(12).reshape(3,4)

In [6]: a.min(axis=0)
Out[6]: array([0, 1, 2, 3])

In [7]: a.min(axis=1)
Out[7]: array([0, 4, 8])

通用函數(shù)

NumPy提供了常見的數(shù)學函數(shù)宦棺,如sin瓣距,cos和exp。在NumPy中代咸,這些函數(shù)在數(shù)組上按元素級別操作蹈丸,產(chǎn)生一個數(shù)組作為輸出。

>>> B = np.arange(3)
>>> B
array([0, 1, 2])
>>> np.exp(B)
array([ 1.        ,  2.71828183,  7.3890561 ])
>>> np.sqrt(B)
array([ 0.        ,  1.        ,  1.41421356])
>>> C = np.array([2., -1., 4.])
>>> np.add(B, C)
array([ 2.,  0.,  6.])
?著作權歸作者所有,轉(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
  • 正文 為了忘掉前任驯绎,我火速辦了婚禮完慧,結果婚禮上,老公的妹妹穿的比我還像新娘剩失。我一直安慰自己屈尼,他們只是感情好,可當我...
    茶點故事閱讀 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)容

  • 基礎篇NumPy的主要對象是同種元素的多維數(shù)組椅亚。這是一個所有的元素都是一種類型、通過一個正整數(shù)元組索引的元素表格(...
    oyan99閱讀 5,130評論 0 18
  • 來源:NumPy Tutorial - TutorialsPoint 譯者:飛龍 協(xié)議:CC BY-NC-SA 4...
    布客飛龍閱讀 32,804評論 6 97
  • 先決條件 在閱讀這個教程之前舱污,你多少需要知道點python呀舔。如果你想從新回憶下,請看看Python Tutoria...
    舒map閱讀 2,580評論 1 13
  • NumPy是Python中關于科學計算的一個類庫扩灯,在這里簡單介紹一下媚赖。 來源:https://docs.scipy...
    灰太狼_black閱讀 1,228評論 0 5
  • 今天參加了永毅的家長會,與老師溝通感覺孩子期中考試成績明顯進步珠插,平時跟同學之間相處還是比較友好惧磺,善良誠實的,同時也...
    顧國勝閱讀 125評論 0 0