NumPy(4)數(shù)組數(shù)學(xué)操作與復(fù)制锥咸、排序

保留初心,砥礪前行

NumPy官方網(wǎng)站

NumPy Tutorial

先定義兩個(gè)NumPy array

A = np.array([[1, 2, 3],
              [2, 3, 4]]).astype(np.float32)
B = np.array([[2, 3, 4],
              [3, 4, 5]]).astype(np.float32)
  • 算數(shù)運(yùn)算:

    Subtraction

print A - B
print np.subtract(A, B)
[[-1. -1. -1.]
 [-1. -1. -1.]]
[[-1. -1. -1.]
 [-1. -1. -1.]]

Addition

print A + B
print np.add(A, B)
[[ 3.  5.  7.]
 [ 5.  7.  9.]]
[[ 3.  5.  7.]
 [ 5.  7.  9.]]

Division

print A / B
print np.divide(A, B)
[[ 0.5         0.66666669  0.75      ]
 [ 0.66666669  0.75        0.80000001]]
[[ 0.5         0.66666669  0.75      ]
 [ 0.66666669  0.75        0.80000001]]

Multiplication细移,只是對(duì)應(yīng)的元素相乘搏予,并不是真正的矩陣乘法

print A * B
print np.multiply(A, B)
[[  2.   6.  12.]
 [  6.  12.  20.]]
[[  2.   6.  12.]
 [  6.  12.  20.]]

dot product 點(diǎn)積,這是真正的矩陣乘法弧轧,與上邊的操作相對(duì)應(yīng)

print np.dot(A, np.transpose(B))
print np.transpose(B)
[[ 20.  26.]
 [ 29.  38.]]
[[ 2.  3.]
 [ 3.  4.]
 [ 4.  5.]]

把每個(gè)元素nij變成以e為底雪侥,nij為指數(shù)的形式——enij

print np.exp(A)
[[  2.71828175   7.38905621  20.08553696]
 [  7.38905621  20.08553696  54.59814835]]

把每個(gè)元素開(kāi)方

print np.sqrt(A)
[[ 1.          1.41421354  1.73205078]
 [ 1.41421354  1.73205078  2.        ]]
  • 比較:

兩個(gè)矩陣之間的對(duì)應(yīng)元素大小的比較

print A == B
print A < B
print A < 3
[[False False False]
 [False False False]]
[[ True  True  True]
 [ True  True  True]]
[[ True  True False]
 [ True False False]]

兩個(gè)矩陣在矩陣層面的比較

print np.array_equal(A, B)
False
  • 聚合函數(shù):

這里包含求所有元素(或按照行或列劃分的)和,所有元素(或按照行或列劃分的)中的最大最小值精绎,元素累加速缨,平均數(shù),中位數(shù)代乃,相關(guān)系數(shù)旬牲,標(biāo)準(zhǔn)差等仿粹。

關(guān)于相關(guān)系數(shù):相關(guān)表和相關(guān)圖可反映兩個(gè)變量之間的相互關(guān)系及其相關(guān)方向,但無(wú)法確切地表明兩個(gè)變量之間相關(guān)的程度原茅。于是吭历,著名統(tǒng)計(jì)學(xué)家卡爾·皮爾遜設(shè)計(jì)了統(tǒng)計(jì)指標(biāo)——相關(guān)系數(shù)(Correlation coefficient)。相關(guān)系數(shù)是用以反映變量之間相關(guān)關(guān)系密切程度的統(tǒng)計(jì)指標(biāo)擂橘。

```

print np.min(A) #A中的最小值
print np.sum(A), np.sum(A, axis=1) #A所有元素求和晌区,橫軸元素求和
print np.max(A, axis=1) #每一個(gè)橫軸的最大值
print np.cumsum(A), np.cumsum(A, axis=1) #按元素累加,每一個(gè)橫軸按元素累加
print np.mean(A) #求所有元素的平均值
print np.median(A) #中位數(shù)
print np.corrcoef(A) #相關(guān)系數(shù)
print np.std(A) #標(biāo)準(zhǔn)差

其中通贞,np.cumsum累加可能不是很清晰朗若,看下邊的例子:

print np.cumsum(A), np.cumsum(A, axis=1)
[ 1. 3. 6. 8. 11. 15.] [[ 1. 3. 6.]
[ 2. 5. 9.]]

可以看出np.cumsum(A)的每一個(gè)元素是A中這個(gè)位置的元素(包括自身)累加到第一個(gè)元素的值。


- ###排序:
np.sort()
Return a sorted copy of an array.
>`Parameters:   `
***a*** : array_like
Array to be sorted.
**axis **: int or None, optional
Axis along which to sort. If None, the array is flattened before sorting. The default is -1, which sorts along the last axis.
**kind** : {‘quicksort’, ‘mergesort’, ‘heapsort’}, optional
Sorting algorithm. Default is ‘quicksort’.
**order** : str or list of str, optional
`Returns:   `
**sorted_array** : ndarray
Array of the same type and shape as *a*.

    ```
C = np.array([1,3,5,2,34,5,6,3,5,8])                                          
print np.sort(C)                    
 [1  2  3  3  5  5  5  6  8 34]```
- ###復(fù)制:
####copy
首先需要注意的是昌罩,B = A并不意味著copy了一個(gè)與A相同的array并賦值給B捡偏,而是B也指向了A指向的那個(gè)array,如果此時(shí)對(duì)A進(jìn)行操作峡迷,則B也會(huì)產(chǎn)生同樣的變化银伟,因?yàn)樗鼈儽緛?lái)就是同一個(gè)array。

C = np.array([1, 2, 3, 4, 6])
D = C.copy()

這是deep copy 绘搞,可以看做是真正的copy彤避,如上代碼所示,將C中的內(nèi)容復(fù)制到D中夯辖,C與D雖然內(nèi)容完全一樣琉预,但是是兩個(gè)array。
####view
>Different array objects can share the same data. The view method creates a new array object that looks at the same data.

    事實(shí)上蒿褂,沒(méi)有任何數(shù)據(jù)類型是固定的圆米,主要取決于如何看待這片數(shù)據(jù)的內(nèi)存區(qū)域。
在numpy.ndarray.view中啄栓,提供對(duì)內(nèi)存區(qū)域不同的切割方式娄帖,來(lái)完成數(shù)據(jù)類型的轉(zhuǎn)換,而無(wú)須要對(duì)數(shù)據(jù)進(jìn)行額外的copy昙楚,來(lái)節(jié)約內(nèi)存空間近速。
我自己的理解是,view生成的array和被view的array的data實(shí)際上指向的是同一塊內(nèi)存堪旧,也就是相同的一塊數(shù)據(jù)削葱。不同點(diǎn)在于view可以表示成不同的shape或type。這樣比copy節(jié)省內(nèi)存淳梦。
接下來(lái)看示例就可以明白個(gè)大概析砸。

C = np.array([1, 2, 3, 4, 6])
D = C.view()
print D is C
print D.base is C
False
True

C = np.array([1, 2, 3, 4, 6])
D = C.view(np.float32)
print C
print D

[1 2 3 4 6]
[ 1.40129846e-45 0.00000000e+00 2.80259693e-45 0.00000000e+00
4.20389539e-45 0.00000000e+00 5.60519386e-45 0.00000000e+00
8.40779079e-45 0.00000000e+00]

他們其實(shí)共享的是同一個(gè)內(nèi)存中的同一個(gè)數(shù)據(jù),只是表示出來(lái)的type不同而已爆袍。

C = np.array([1, 2, 3, 4, 6])
D = C.view()
C[0] = 3
print C
print D

[3 2 3 4 6]
[3 2 3 4 6]

當(dāng)array C中的某個(gè)元素變化首繁,可以看到array D中的相應(yīng)元素也發(fā)生了變化作郭。

好了,以上就是今天的全部?jī)?nèi)容了蛮瞄,歡迎討論指正所坯。

>[相關(guān)鏈接:NumPy(1)簡(jiǎn)介谆扎,基礎(chǔ)屬性挂捅,數(shù)組創(chuàng)建(ones,zeros堂湖,empty闲先,arange,linespace)](http://www.reibang.com/p/5472800d7c36)
>[相關(guān)鏈接:NumPy(2)reshape无蜂,dot伺糠,flat](http://www.reibang.com/p/949b1f8750a9)
>[相關(guān)鏈接:NumPy(3)full,eye斥季,empty训桶,random](http://www.reibang.com/p/973bceed75c5)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市酣倾,隨后出現(xiàn)的幾起案子舵揭,更是在濱河造成了極大的恐慌,老刑警劉巖躁锡,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件午绳,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡映之,警方通過(guò)查閱死者的電腦和手機(jī)拦焚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人憋槐,你說(shuō)我怎么就攤上這事赚抡。” “怎么了螟够?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)峡钓。 經(jīng)常有香客問(wèn)我妓笙,道長(zhǎng),這世上最難降的妖魔是什么能岩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任寞宫,我火速辦了婚禮,結(jié)果婚禮上拉鹃,老公的妹妹穿的比我還像新娘辈赋。我一直安慰自己鲫忍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布钥屈。 她就那樣靜靜地躺著悟民,像睡著了一般。 火紅的嫁衣襯著肌膚如雪篷就。 梳的紋絲不亂的頭發(fā)上射亏,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音竭业,去河邊找鬼智润。 笑死,一個(gè)胖子當(dāng)著我的面吹牛未辆,可吹牛的內(nèi)容都是我干的窟绷。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼咐柜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼兼蜈!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起拙友,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤为狸,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后献宫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體钥平,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年姊途,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涉瘾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捷兰,死狀恐怖立叛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贡茅,我是刑警寧澤秘蛇,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站顶考,受9級(jí)特大地震影響赁还,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驹沿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一艘策、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渊季,春花似錦朋蔫、人聲如沸罚渐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荷并。三九已至,卻和暖如春青扔,著一層夾襖步出監(jiān)牢的瞬間源织,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工赎懦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雀鹃,地道東北人幻工。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓励两,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親囊颅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子当悔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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

  • 最近在寫(xiě)個(gè)性化推薦的論文,經(jīng)常用到Python來(lái)處理數(shù)據(jù)踢代,被pandas和numpy中的數(shù)據(jù)選取和索引問(wèn)題繞的比較...
    shuhanrainbow閱讀 4,568評(píng)論 6 19
  • 先決條件 在閱讀這個(gè)教程之前盲憎,你多少需要知道點(diǎn)python。如果你想從新回憶下胳挎,請(qǐng)看看Python Tutoria...
    舒map閱讀 2,584評(píng)論 1 13
  • # -*- coding: utf-8 -*- from __future__ import division f...
    小豆角lch閱讀 1,119評(píng)論 0 0
  • NumPy是Python中關(guān)于科學(xué)計(jì)算的一個(gè)類庫(kù)饼疙,在這里簡(jiǎn)單介紹一下。 來(lái)源:https://docs.scipy...
    灰太狼_black閱讀 1,229評(píng)論 0 5
  • 大學(xué)到了大二慕爬,不知道我的路還能走多遠(yuǎn)窑眯,我仿佛看見(jiàn)了死亡之神在和我招手。它是一個(gè)通往死亡之神的必經(jīng)之路医窿。而我這個(gè)人有...
    大好人666閱讀 201評(píng)論 0 0