NumPy學習筆記 入門篇

2021-06-19 01:38:43 字數 3050 閱讀 9532

***numpy學習筆記 收集者:keengle(

最近在學習scipy。在理解scipy之前,numpy作為scipy基本的模組之一,是不得不去理解掌握的。先總結一下numpy部分的內容吧。接下來學習scipy,最後是pylab和matplotlib。

介紹numpy是乙個python的擴充套件模組,通過使用numpy,我們可以進行科學計算。numpy提供了矩陣、線性代數、傅利葉變換等的解決方法。

numpy包含:

· n維矩陣物件

· 線性代數運算功能

· 傅利葉變換

· fortran**整合的工具

· c++**整合的工具

numpy提供了兩種基本的物件:ndarray(n-dimensional array object)和 ufunc(universal function object)。前者為乙個n維的矩陣在python中的儲存物件,它是一類同型別的物件(如int、bool、unicode、str等等)的集合。

· python 2.5: 

· numpy:  使用

安裝好後,首先引入模組:

>>> from numpy import *

建立乙個矩陣

>>> a=array([[1,2,3],[4,5,6]])

>>> a.shape

(2, 3)

>>> b=arange(15);print b

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

>>> b.reshape(3,5)

array([[ 0,  1,  2,  3,  4],

[ 5,  6,  7,  8,  9],

[10, 11, 12, 13, 14]])

可以看到,a是2行3列的矩陣。通過arange方法,可以得到乙個1維的陣列。然後我們可以通過reshape方法改變它的維度。

>>> c=zeros((4,5));print c

[[ 0.  0.  0.  0.  0.]

[ 0.  0.  0.  0.  0.]

[ 0.  0.  0.  0.  0.]

[ 0.  0.  0.  0.  0.]]

>>> d=ones((5,7));print d

[[ 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.  1.  1.  1.]

[ 1.  1.  1.  1.  1.  1.  1.]]

>>> e=add(c,arange(20).reshape(4,5))

>>> f=dot(e,d);print f

[[ 10.  10.  10.  10.  10.  10.  10.]

[ 35.  35.  35.  35.  35.  35.  35.]

[ 60.  60.  60.  60.  60.  60.  60.]

[ 85.  85.  85.  85.  85.  85.  85.]]

使用zeros可以生成乙個零矩陣。同理,用ones可以生成值全部為1的矩陣。我選擇了乙個4*5的矩陣e,和乙個5*7的矩陣d做點乘。最後得到f矩陣。再舉乙個更加明顯的例子:

>>> a=arange(5);print a

[0 1 2 3 4]

>>> b=arange(5).reshape(5,1);print b

[[0]

[1][2]

[3][4]]

>>> print dot(a,b)

[30]

點積的效果更加明顯了。

ndarray的幾個常用屬性:

· shape: 代表乙個array的形態,是乙個向量還是乙個矩陣,抑或是乙個更複雜的向量組。

· ndim: 代表這個array的維度

· size: 在array中擁有的元素數量

· itemsize: 這個array中每乙個元素所需要佔的位元組數

· nbytes: 這個array的總位元組數(=itemsize*size)

· real: 代表乙個array中所有元素的實數部分

· imag: 同理,代表乙個array中所有元素的虛數部分

· flat: 將這個array整理成一維的,可以索引的一系列的元素組合。它實際上是通過iterator實現的,我們可以通過for x in array.flat來取得到所有的元素

· t: 矩陣轉置,同transpose()方法

一些比較有用的方法:

· tolist(): 將array轉化成乙個python中的list物件

· item(*args): 取得某一位置的元素

· dump(file): 將這個物件序列化至檔案。同cpickle中的dump作用

· dumps(): 將序列化的結果通過字串加以輸出

一些關於array的形態操作:

· reshape(): 改變array的形態

· resize(): 也是改變array的形態。不同的是,resize是直接修改這個物件的,而reshape則會生成乙個新的物件

· transpose(): 這個就是矩陣的轉置操作啦

· swapaxes(): 將n個維度中任意兩個維度(座標軸)進行調換

· flatten(): 複製乙個一維的array出來

還有一些關於array的運算操作:

· max():取得所有元素中的最大值

· min():取得最小值。還有一點值得說,就是max、min這些函式都可以針對某一座標軸(具體維度)進行運算,例如array.max(axis=0),就在0座標上求最大值

· sum():求和

· cumsum():求累計和

· prod():求所有元素之積

· cumprod():求累計積

· all():如果所有元素都為真,那麼返回真;否則返回假

· any():只要有乙個元素為真則返回真

· mean():求平均數

總結了一部分,更多的方法還需要我們使用中體驗。

Spring學習筆記 入門篇

說明 本章筆記是一些針對入門的簡單步驟的筆記,入門的同學不需要知道太多關於spring內部原理的東西。還有一些犄角旮旯的瑣碎知識,如果你面試會遇到,背背就可以了。1.spring是面向介面程式設計的。可忽略 2.spring2個核心 ioc di 和aop。ioc di 也叫控制反轉。是解決類之間的...

Swi Prolog學習筆記(入門篇)

首先介紹乙個學習swi prolog 和amzi prolog很靠譜的中文 然後介紹一下我在學習時發現的prolog和其他程式語言的不同之處。prolog是邏輯程式語言,在解決邏輯推理問題是有很明顯的優勢。它的解決問題的策略是基於列舉法的,所以返回結果很可能不唯一。進行prolog程式設計時重要的是...

UEFI學習筆記 入門篇

efi boot 共分為6 個主要階段 sec,pei,dxe,ipl,bds,rt 在phoenix tiano 架構裡,這些階段涉及到的主要檔案如下 1 sec phase 這個階段使用 cache 來當作memory 用,在sec 完畢後,c環境已經ok。lseccore.inf lflat3...