複製鏈接
請複製以下鏈接發送給好友

numpy

鎖定
NumPy(Numerical Python)是Python的一種開源的數值計算擴展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表(nested list structure)結構要高效的多(該結構也可以用來表示矩陣(matrix)),支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫 [1] 
外文名
NumPy
NumPython
含    義
Python的一種開源的科學計算庫
內    容
提供和處理N維數組對象Array
用    途
科學計算,數據分析

numpyNumpy介紹

一個用python實現的科學計算,包括:1、一個強大的N維數組對象Array;2、比較成熟的(廣播)函數庫;3、用於整合C/C++Fortran代碼的工具包;4、實用的線性代數傅里葉變換隨機數生成函數。numpy和稀疏矩陣運算包scipy配合使用更加方便。
NumPy(Numeric Python)提供了許多高級的數值編程工具,如:矩陣數據類型、矢量處理,以及精密的運算庫。專為進行嚴格的數字處理而產生。多為很多大型金融公司使用,以及核心的科學計算組織如:Lawrence Livermore,NASA用其處理一些本來使用C++,Fortran或Matlab等所做的任務。
NumPy 的前身為 Numeric ,最早由 Jim Hugunin 與其它協作者共同開發,2005 年,Travis Oliphant 在 Numeric 中結合了另一個同性質的程序庫 Numarray 的特色,並加入了其它擴展而開發了 NumPy。NumPy 為開放源代碼並且由許多協作者共同維護開發。 [1] 

numpy數據類型ndarray

NumPy provides an N-dimensional array type, the ndarray, which describes a collection of “items” of the same type.
NumPy提供了一個N維數組類型ndarray,它描述了相同類型的“items”的集合。
numpy numpy
ndarray到底跟原生python列表的區別:
從圖中我們可以看出ndarray在存儲數據的時候,數據與數據的地址都是連續的,這樣就給使得批量操作數組元素時速度更快。
這是因為ndarray中的所有元素的類型都是相同的,而Python列表中的元素類型是任意的,所以ndarray在存儲元素時內存可以連續,而python原生list就只能通過尋址方式找到下一個元素,這雖然也導致了在通用性能方面Numpy的ndarray不及Python原生list,但在科學計算中,Numpy的ndarray就可以省掉很多循環語句,代碼使用方面比Python原生list簡單的多。
numpy內置了並行運算功能,當系統有多個核心時,做某種計算時,numpy會自動做並行計算
Numpy底層使用C語言編寫,數組中直接存儲對象,而不是存儲對象指針,所以其運算效率遠高於純Python代碼。

numpyndarray的屬性

ndarray的屬性 ndarray的屬性
生成數組的方法:
empty(shape[, dtype, order])
empty_like(a[, dtype, order, subok])
eye(N[, M, k, dtype, order])
identity(n[, dtype])
ones(shape[, dtype, order])
ones_like(a[, dtype, order, subok])
zeros(shape[, dtype, order])
zeros_like(a[, dtype, order, subok])
full(shape, fill_value[, dtype, order])
full_like(a, fill_value[, dtype, order, subok])

numpyNumPy 數據類型

numpy 支持的數據類型Python 內置的類型要多很多,基本上可以和 C 語言的數據類型對應上,其中部分類型對應為 Python 內置的類型。下表列舉了常用 NumPy 基本類型。 [2] 
名稱
描述
bool_
布爾型數據類型(True 或者 False)
int_
默認的整數類型(類似於 C 語言中的 long,int32 或 int64)
intc
與 C 的 int 類型一樣,一般是 int32 或 int 64
intp
用於索引的整數類型(類似於 C 的 ssize_t,一般情況下仍然是 int32 或 int64)
int8
字節(-128 to 127)
int16
整數(-32768 to 32767)
int32
整數(-2147483648 to 2147483647)
int64
整數(-9223372036854775808 to 9223372036854775807)
uint8
無符號整數(0 to 255)
uint16
無符號整數(0 to 65535)
uint32
無符號整數(0 to 4294967295)
uint64
無符號整數(0 to 18446744073709551615)
float_
float64 類型的簡寫
float16
半精度浮點數,包括:1 個符號位,5 個指數位,10 個尾數位
float32
單精度浮點數,包括:1 個符號位,8 個指數位,23 個尾數位
float64
雙精度浮點數,包括:1 個符號位,11 個指數位,52 個尾數位
complex_
complex128 類型的簡寫,即 128 位複數
complex64
複數,表示雙 32 位浮點數(實數部分和虛數部分)
complex128
複數,表示雙 64 位浮點數(實數部分和虛數部分)
numpy 的數值類型實際上是 dtype 對象的實例,並對應唯一的字符,包括 np.bool_,np.int32,np.float32,等等。

numpyNumPy 數組屬性

NumPy 數組的維數稱為秩(rank),秩就是軸的數量,即數組的維度,一維數組的秩為 1,二維數組的秩為 2,以此類推。
在 NumPy中,每一個線性的數組稱為是一個軸(axis),也就是維度(dimensions)。比如説,二維數組相當於是兩個一維數組,其中第一個一維數組中每個元素又是一個一維數組。所以一維數組就是 NumPy 中的軸(axis),第一個軸相當於是底層數組,第二個軸是底層數組裏的數組。而軸的數量——秩,就是數組的維數。 [3] 
很多時候可以聲明 axis。axis=0,表示沿着第 0 軸進行操作,即對每一列進行操作;axis=1,表示沿着第1軸進行操作,即對每一行進行操作。
NumPy 的數組中比較重要 ndarray 對象屬性有:
屬性
説明
ndarray.ndim
秩,即軸的數量或維度的數量
ndarray.shape
數組的維度,對於矩陣,n 行 m 列
ndarray.size
數組元素的總個數,相當於 .shape 中 n*m 的值
ndarray.dtype
ndarray 對象的元素類型
ndarray.itemsize
ndarray 對象中每個元素的大小,以字節為單位
ndarray.flags
ndarray 對象的內存信息
ndarray.real
ndarray元素的實部
ndarray.imag
ndarray 元素的虛部
ndarray.data
包含實際數組元素的緩衝區,由於一般通過數組的索引獲取元素,所以通常不需要使用這個屬性。
參考資料