天天看點

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

Python現在是最熱門的人工智能語言,各種工具的支援如Google的Tensorflow,都是首選支援Python的。

但是,與R語言不同,Python語言設計時,并沒有考慮對于矩陣運算,統計計算等功能做專項支援。于是我們需要NumPy庫來補足這一能力上的不足。

NumPy是Python的著名擴充庫,相當于Python中的MATLAB。

在算法中我們最經常用到的就是矩陣,我們就從矩陣開始說起吧。

NumPy中,使用二維的多元數組ndarray來存儲矩陣。

例:

會生成這樣一個多元數組對象

可以通過arange函數來生成指定開始值,結束值和步長值的一維數組。請注意,結束值并不包含在序列中,也就是說結束值是開區間。

與arange類似,linspace通過給定初值、終值和元素個數來生成序列。是否包含終值可以通過endpoint屬性來設定。

除了線性的等差數列,我們也可以通過等比數列的方式來生成一維數組。

預設是以10的n次方為參數,比如logspace(0,4,3)的意思是,初值為10的0次方,即1,終值是10的4次方,即100,一共生成3個值。

例,生成[1,100,10000]

我們當然也可以修改基數,比如改成3:

如果有一個一維數組要轉為多元數組,可以通過修改shape屬性來實作。

我們可以先将資料存在一維數組中,可以用清單或者元組來生成一維數組,它們是等價的:

我們通過shape屬性來檢視一個數組的形狀:

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

如果能确定一個軸,另一個可以賦-1讓系統自己去算。

如果想保持這個數組不變,生成一個形狀改變的新數組,可以調用reshape方法。

例:我們将一個25個元素的數組生成一個5x5的新數組

zeros生成全是0的數組,第一個參數是shape

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

通過fromfunction函數可以通過一個函數來生成想要的數組。

例,生成九九乘法表: