Numpy基礎(chǔ)入門【2】

通用函數(shù)ufunc

一元ufunc舉例:
1酣藻、abs笑窜、fabs:計算絕對值,fabs更快
2、sqrt:計算各元素的平方根瓤檐,相當于arr0.5
3蒂誉、square:計算各元素的平方根,相當遠arr
2
4距帅、exp:計算各元素的指數(shù)e的x次方
...
二元ufunc舉例:
1右锨、add:將數(shù)組中對應的元素想加
2、subtract:從第一個數(shù)組中減去第二個數(shù)組中的元素
3碌秸、multiply:數(shù)組元素相乘
4绍移、divide:除法
5、power:對第一個數(shù)組中的元素A讥电,根據(jù)第二個數(shù)組中的相應元素B蹂窖,計算A的B次方。

利用數(shù)組進行數(shù)據(jù)處理

用數(shù)組表達式代替循環(huán)的做法恩敌,通常被稱為矢量化瞬测,要比等價的Python方法快上一兩個數(shù)量級,尤其是數(shù)值運算纠炮。
np.meshgrid函數(shù)的用法月趟,[X,Y] = meshgrid(x,y) 將向量x和y定義的區(qū)域轉(zhuǎn)換成矩陣X和Y,這兩個矩陣可以用來表示mesh和surf的三維空間點以及兩個變量的賦值恢口。其中矩陣X的行向量是向量x的簡單復制孝宗,而矩陣Y的列向量是向量y的簡單復制。舉例如下:

import numpy as np
points=np.arange(-5,5,0.01)
xs,ys=np.meshgrid(points,points)
xs
array([[-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99],
       [-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99],
       [-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99],
       ..., 
       [-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99],
       [-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99],
       [-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99]])

將條件邏輯表述為數(shù)組運算
np.where函數(shù)是三元表達式x if condition else y的矢量化版本耕肩,舉例:

xarr=np.array([1.1,1.2,1.3,1.4,1.5])
yarr=np.array([2.1,2.2,2.3,2.4,2.5])
cond=np.array([True,False,True,True,False])
cond
array([ True, False,  True,  True, False], dtype=bool)

假設我們想根據(jù)cond中的值來確定選擇xarr還是yarr因妇,使用列表推導式的方法如下:

result=[(x if c else y) for x,y,c in zip(xarr,yarr,cond)]

可以想到问潭,這種方法的處理速度不是很快,無法用于多維數(shù)組婚被。使用np.where會更為簡單:

result=np.where(cond,xarr,yarr)
result
array([ 1.1,  2.2,  1.3,  1.4,  2.5])

其中where函數(shù)的第二三個參數(shù)不一定是數(shù)組狡忙,可以是標量。
cond就是負責判斷址芯,生成的數(shù)組與cond的構(gòu)型一樣

排序

sort方法去枷,對于多維數(shù)組,可以接收參數(shù)是复,在任何一個軸向上進行排序删顶。
np.sort返回的是數(shù)組的已排序副本,arr.sort則會修改數(shù)組本省淑廊。
例如:

arr=np.random.randn(8)
arr
array([-1.86799618,  1.17907009, -0.17769902,  1.52782505, -1.00578336,
       -0.606077  ,  1.24019255,  0.02054406])
arr.sort()
arr
array([-1.86799618, -1.00578336, -0.606077  , -0.17769902,  0.02054406,
        1.17907009,  1.24019255,  1.52782505])
arr=np.random.randn(5,3)
arr
array([[-0.87890012,  0.83758321,  0.07969702],
       [-1.12805445, -0.32557521, -0.65476785],
       [ 1.33504954,  0.59905743,  3.13774442],
       [-1.07642073,  0.08063416,  0.8242277 ],
       [-0.40929861, -0.14981955, -1.56494243]])
arr.sort(1)
arr
array([[-0.87890012,  0.07969702,  0.83758321],
       [-1.12805445, -0.65476785, -0.32557521],
       [ 0.59905743,  1.33504954,  3.13774442],
       [-1.07642073,  0.08063416,  0.8242277 ],
       [-1.56494243, -0.40929861, -0.14981955]])
numpy.sort(a, axis=-1, kind='quicksort', order=None)

返回數(shù)組的排序副本逗余。
參數(shù):
a:array_like
數(shù)組要排序。
axis:int或None季惩,可選
要排序的軸录粱。如果為“無”,則在排序之前將數(shù)組展平画拾。默認值為-1啥繁,沿最后一個軸排序。
kind:{'quicksort'青抛,'mergesort'旗闽,'heapsort'},可選
排序算法蜜另。默認值為“quicksort”适室。
order:str或str的列表,可選
當a是定義了字段的數(shù)組時举瑰,此參數(shù)指定首先捣辆,第二等比較哪些字段。單個字段可以指定為字符串此迅,并且不是所有字段都需要指定汽畴,但是未指定的字段仍將按照它們在dtype中出現(xiàn)的順序使用,以斷開關(guān)系耸序。
返回:
sorted_array:ndarray
數(shù)組的類型和形狀與a相同忍些。

用于數(shù)組的文件輸入輸出

1、二進制格式保存
np.save和np.load是讀寫數(shù)據(jù)的兩個主要函數(shù)佑吝。
2坐昙、文本文件
np.loadtxt或更為專業(yè)的np.genfromtxt函數(shù)將文本數(shù)據(jù)加載到普通的Numpy數(shù)組中
np.savetxt保存文本绳匀。

線性代數(shù)

常用的函數(shù)說明:
diag芋忿,以一維數(shù)組的形式返回方針的對角線(或?qū)蔷€)元素炸客,或?qū)⒁唤M數(shù)組轉(zhuǎn)換成方陣。
numpy.diag(v, k=0)
參數(shù):
v:array_like
如果v是2-D數(shù)組戈钢,則返回其k對角線的副本痹仙。如果v是1-D數(shù)組,則在k對角線上返回具有v的2-D數(shù)組殉了。
k:int开仰,可選
有問題的對角線。默認值為0薪铜。對于主對角線上方的對角線使用k> 0众弓,對于主對角線下方的對角線使用k 。
返回:
out:ndarray
提取的對角線或構(gòu)造的對角數(shù)組隔箍。

x=np.arange(9).reshape(3,3)
np.diag(x)
array([0, 4, 8])
np.diag(x,k=1)
array([1, 5])
np.diag(x,k=-1)
array([3, 7])
np.diag(np.diag(x))
array([[0, 0, 0],
       [0, 4, 0],
       [0, 0, 8]])

numpy.dot(a, b, out=None)
兩個數(shù)組的點積谓娃。
對于2-D數(shù)組,其等效于矩陣乘法蜒滩,對于1-D數(shù)組等效于向量的內(nèi)積(無共軛復數(shù))滨达。對于N維,它是a的最后一個軸和b的倒數(shù)第二個軸的積的和:
dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
參數(shù):
a:array_like
第一個參數(shù)俯艰。
b:array_like
第二個參數(shù)捡遍。
out:ndarray,可選
輸出參數(shù)竹握。如果沒有使用画株,返回必須有確切的類型。特別地啦辐,它必須具有正確的類型污秆,必須是C連續(xù)的,并且其dtype必須是dot(a,b)將返回的dtype昧甘。這是一個性能特性良拼。因此,如果不滿足這些條件充边,則引發(fā)異常庸推,而不是試圖靈活。
返回:
輸出:ndarray
返回a和b的點積浇冰。如果a和b都是標量或都是1-D數(shù)組贬媒,則返回標量;否則返回一個數(shù)組肘习。如果給出out际乘,則返回。
引發(fā):
ValueError
如果a的最后一個維度大小與b的倒數(shù)第二個維度的大小不同漂佩。

numpy.trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None)
沿數(shù)組的對角線返回總和脖含。
如果a是2-D罪塔,則返回具有給定偏移的沿其對角線的和,即對于所有i养葵,元素a[i,i+offset]
如果a有兩個以上的尺寸征堪,則由axis1和axis2指定的軸用于確定返回其軌跡的2-D子數(shù)組。所得數(shù)組的形狀與移除axis1和axis2的a的形狀相同关拒。

參數(shù):
a:array_like
輸入數(shù)組佃蚜,從中獲取對角線。
offset:int着绊,可選
對角線與主對角線的偏移谐算。可以是正面和負面归露。默認為0氯夷。
axis1,axis2:int靶擦,可選
軸將被用作應從中獲取對角線的2-D子陣列的第一和第二軸腮考。默認值是a的前兩個軸。
dtype:dtype玄捕,可選
確定返回的數(shù)組和累加器元素的累加器的數(shù)據(jù)類型踩蔚。如果dtype具有值None且a是小于默認整數(shù)精度的整數(shù)類型的精度,則使用缺省整數(shù)精度枚粘。否則馅闽,精度與a的精度相同。
out:ndarray馍迄,可選
數(shù)組福也,其中放置輸出。它的類型被保留攀圈,并且它必須是保持輸出的正確形狀暴凑。
返回:
sum_along_diagonals:ndarray
如果a是2-D,則返回沿對角線的和赘来。如果a具有較大的維现喳,則返回沿對角線的和的數(shù)組。

還有幾個其他的犬辰,比如:
det嗦篱,計算矩陣行列式
inv,計算矩陣的逆
lstsq幌缝,計算Ax=B的最小二乘解

隨機數(shù)的生成

numpy.random模塊增加了一些 高效生成多種概率分布的樣本值的函數(shù)灸促,比如normal,可以得到一個標準正太分布的數(shù)組:

samples=np.random.normal(size=(4,4))
samples
array([[ 0.05362618, -1.44096904, -0.59506811, -1.14913339],
       [-0.82946896, -2.47470801, -0.25017015, -0.50970962],
       [-0.28899863,  0.98025628,  0.36890152, -0.26948141],
       [ 0.87736262,  1.43316428, -0.28441972,  0.81287675]])

還有其他的一些函數(shù),比如:
rand浴栽,產(chǎn)生均勻分布的樣本值
randint荒叼,從給定的上下限范圍內(nèi)隨機選取整數(shù)
randn,產(chǎn)生正態(tài)分布(平均值為0吃度,標準差為1)的樣本甩挫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贴硫,一起剝皮案震驚了整個濱河市椿每,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌英遭,老刑警劉巖间护,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挖诸,居然都是意外死亡汁尺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門多律,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痴突,“玉大人,你說我怎么就攤上這事狼荞×勺埃” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵相味,是天一觀的道長拾积。 經(jīng)常有香客問我,道長丰涉,這世上最難降的妖魔是什么拓巧? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮一死,結(jié)果婚禮上肛度,老公的妹妹穿的比我還像新娘。我一直安慰自己投慈,他們只是感情好贤斜,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逛裤,像睡著了一般瘩绒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上带族,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天锁荔,我揣著相機與錄音,去河邊找鬼蝙砌。 笑死阳堕,一個胖子當著我的面吹牛跋理,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恬总,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼前普,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了壹堰?” 一聲冷哼從身側(cè)響起拭卿,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贱纠,沒想到半個月后峻厚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谆焊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年惠桃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辖试。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡辜王,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出罐孝,到底是詐尸還是另有隱情呐馆,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布肾档,位于F島的核電站摹恰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏怒见。R本人自食惡果不足惜俗慈,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遣耍。 院中可真熱鬧闺阱,春花似錦、人聲如沸舵变。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纪隙。三九已至赊豌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绵咱,已是汗流浹背碘饼。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人艾恼。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓住涉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親钠绍。 傳聞我的和親對象是個殘疾皇子舆声,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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