NumPy(Numerical Python的簡(jiǎn)稱)是高性能科學(xué)計(jì)算和數(shù)據(jù)分析 的基礎(chǔ)包跛蛋。
NumPy的ndarray:一種多維數(shù)組對(duì)象
ndarray是一個(gè)通用的同構(gòu)數(shù)據(jù)多維容器,也就是說(shuō),其中的所有 元素必須是相同類型的。每個(gè)數(shù)組都有一個(gè)shape(一個(gè)表示各維度大 小的元組)和一個(gè)dtype(一個(gè)用于說(shuō)明數(shù)組數(shù)據(jù)類型的對(duì)象)
N維數(shù)組對(duì)象(即ndarray)
創(chuàng)建:
1. 使用array函數(shù)
1. 接受一切序列型 的對(duì)象(包括其他數(shù)組),然后產(chǎn)生一個(gè)新的含有傳入數(shù)據(jù)的NumPy數(shù)組
In [1]: data1 = [6, 7.5, 8, 0, 1]
In [2]: arr1 = np.array(data1)
In [3]: arr1
Out[3]: array([ 6. , 7.5, 8. , 0. , 1. ])
arr2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
2. 嵌套序列(比如由一組等長(zhǎng)列表組成的列表)將會(huì)被轉(zhuǎn)換為一個(gè)多維數(shù)組
In [4]: data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
In [5]: arr2 = np.array(data2)
In [6]: arr2
Out[6]: array([[1, 2, 3, 4], [5, 6, 7, 8]])
3. 比如臼闻,zeros和 ones分別可以創(chuàng)建指定長(zhǎng)度或形狀的全0或全1數(shù)組屋彪。
empty可以創(chuàng)建一個(gè)沒(méi)有任何具體值的數(shù)組
認(rèn)為np.empty會(huì)返回全0數(shù)組的想法是不安全的芬膝。很多情況 下(如前所示),它返回的都是一些未初始化的垃圾值篮迎。eye:?jiǎn)挝痪仃? np.zeros((3, 6))
4. arange是Python內(nèi)置函數(shù)range的數(shù)組版: np.arange(15)
數(shù)據(jù)類型
由于NumPy關(guān)注的是數(shù)值計(jì) 算男图,因此,如果沒(méi)有特別指定甜橱,數(shù)據(jù)類型基本都是float64(浮點(diǎn)數(shù))逊笆。ndim返回的是數(shù)組的維度,返回的只有一個(gè)數(shù)岂傲,該數(shù)即表示數(shù)組的維度难裆。
數(shù)據(jù)類型保存在一個(gè)特殊的 dtype對(duì)象中
In[7]: arr1 = np.array([1, 2, 3], dtype=np.float64)
In[8]: arr1.dtype
Out[8]: dtype('float64')
數(shù)值型 dtype的命名方式相同:一個(gè)類型名(如float或int),后面跟一個(gè)用于表 示各元素位長(zhǎng)的數(shù)字镊掖。
類型轉(zhuǎn)換:通過(guò)ndarray的astype方法顯式地轉(zhuǎn)換其dtype
In [9]: arr = np.array([1, 2, 3, 4, 5])
In [10]: arr.dtype
Out[10]: dtype('int64')
In [11]: float_arr = arr.astype(np.float64)
In [12]: float_arr.dtype
Out[12]: dtype('float64')
如果將浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)乃戈, 則小數(shù)部分將會(huì)被截?cái)嗳绻匙址當(dāng)?shù)組表示的全是數(shù)字,也可以用astype將其轉(zhuǎn)換為 數(shù)值形式