NumPy是用于數(shù)據(jù)科學(xué)計算的基礎(chǔ)模塊,不但能夠完成科學(xué)計算的任務(wù),而且能夠被用作高效的多維數(shù)據(jù)容器,可用于存儲和處理大型矩陣。NumPy 的數(shù)據(jù)容器能夠保存任意類型的數(shù)據(jù),這使得 NumPy 可以無縫并快速地整合各種數(shù)據(jù)。NumPy 本身并沒有提供很多高級的數(shù)據(jù)分析功能。理解 NumPy 數(shù)組及數(shù)組計算有助于更加高效地使用諸如 pandas等數(shù)據(jù)處理工具。
Python 提供了一個 array 模塊。array 和 list 不同,它直接保存數(shù)值,和C語言的一維數(shù)組比較類似。但是由于 Python 的 array 模塊不支持多維,也沒有各種運算函數(shù),因此也不適合做數(shù)值運算。NumPy 的誕生彌補了這些不足。NumPy 提供了一種存儲單一數(shù)據(jù)類型的多維數(shù)組-ndarray。
一、創(chuàng)建數(shù)組對象NumPy 提供了兩種基本的對象: ndarray( N-dimensionalArray Object)和 ufunc( UniversalFunction Object)。ndarray(下文統(tǒng)一稱為數(shù)組)是存儲單一數(shù)據(jù)類型的多維數(shù)組,而 ufunc則是能夠?qū)?shù)組進行處理的函數(shù)。
1、數(shù)組屬性
為了更好地理解和使用數(shù)組,在創(chuàng)建數(shù)組之前,了解數(shù)組的基本屬性是十分有必要的。數(shù)組的屬性及其說明如下表所示。
2、數(shù)組創(chuàng)建
NumPy提供的array函數(shù)可以創(chuàng)建一維或多維數(shù)組,其基本使用格式如下。
numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, like=None)
array函數(shù)主要參數(shù)及其說明如下表。
除了使用array函數(shù)創(chuàng)建數(shù)組之外,還可以使用arange函數(shù)創(chuàng)建數(shù)組。arange函數(shù)類似于Python自帶的函數(shù)range,通過指定開始值、終值和步長來創(chuàng)建一維數(shù)組,創(chuàng)建的數(shù)組不含終值。arange函數(shù)的基本使用格式如下。
numpy.arange([start, ]stop, [step, ]dtype=None, *, like=None)
arange函數(shù)常用參數(shù)及其說明如下表。
linspace函數(shù)通過指定開始值、終值和元素個數(shù)來創(chuàng)建一維數(shù)組,默認(rèn)設(shè)置包括終值,這一點需要和arange函數(shù)區(qū)分。linspace函數(shù)的基本使用格式如下。
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
linspace函數(shù)的常用參數(shù)及其說明如下表。
logspace函數(shù)和linspace函數(shù)類似,它創(chuàng)建的是等比數(shù)列。logspace函數(shù)的基本使用格式如下。
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)
在logspace函數(shù)的參數(shù)中,除了base參數(shù)和linspace函數(shù)的retstep參數(shù)不同之外,其余均相同。
NumPy還提供了其他函數(shù)用于創(chuàng)建特殊數(shù)組,如zeros、eye、diag和ones函數(shù)等。
zeros函數(shù):用于創(chuàng)建值全部為0的數(shù)組,即創(chuàng)建的數(shù)組值全部填充為0。
eye函數(shù):用于生成主對角線上的元素為1,其他的元素為0的數(shù)組,類似單位矩陣。
diag函數(shù):創(chuàng)建類似對角的數(shù)組,即除對角線外的其他元素都為0,對角線上的元素可以是0或其他值。
ones函數(shù):用于創(chuàng)建元素全部為1的數(shù)組,即創(chuàng)建的數(shù)組元素全部填充為1。
3. 數(shù)組數(shù)據(jù)類型
在實際的業(yè)務(wù)數(shù)據(jù)處理中,為了更準(zhǔn)確地計算結(jié)果,需要使用不同精度的數(shù)據(jù)類型。
NumPy極大程度地擴充了原生Python的數(shù)據(jù)類型。在NumPy中,所有數(shù)組的數(shù)據(jù)類型是同質(zhì)的,即數(shù)組中的所有元素類型必須是一致的。將元素類型保持一致可以更容易確定該數(shù)組所需要的存儲空間。
NumPy的基本數(shù)據(jù)類型及其取值范圍如下表。