Numpy是一個開源的Python科學計算基礎庫
1.一個強大的N維數組對象ndarray
2.廣播功能函數
3.整合c/c++/fortran代碼的工具
4.線性代數,傅裡葉變換,随機數生成等功能
NumPy是SciPy,Pandas等資料處理或科學計算庫的基礎
NumPy的引用:
import numpy as np#引入子產品的别名
N維數組對象:ndarray
import numpy as np
def npSum():
a = np.array([0,1,2,3,4])
b = np.array([9,8,7,6,2])
c = a**2 + b**3
print(npSum())
數組對象可以去掉元素間運算所需要的循環,是得一維向量更像單個資料
設定專門的數組對象,經過優化,可以提升這類應用的運算速度
觀察:科學計算中,一個次元所有資料的類型往往相同。
ndarray是一個多元數組對象,由兩部分構成:
1.實際的資料
2.描述這些資料的中繼資料(資料次元,資料類型等)
3.ndarray數組一般要求所有元素類型相同(同質),數組下标從0開始
ndarray執行個體:
a = np.array([1,2,3,5,6],[2,3,4,2,2])
print(a)
np.array()生成一個ndarray數組
ndarray在程式中的别名是:array
np.array()輸出是[]形式,元素有空格分割
軸(axis):儲存資料的次元
秩(rank):軸的數量
ndarray對象的屬性
1 .ndim:秩,即軸的數量或者次元的數量
2 .shape:ndarray對象的尺度,對于矩陣,n行m列
3 .size:ndarray對象元素的個數,相當于.shape中n*m的值
4 .dtype:ndarray:對象元素類型
5 .itemsize:ndarray對象中每個元素的大小,以位元組為機關
ndarray的元素類型:
bool
intc
intp
int8
int16
int32
int64
uint8
uint16
uint32
uint64
float16
float32
float64
complex64
complex128
ndarray數組可以由一個非同質對象構成
非同質ndarray元素為對象類型
非同質ndarray對象無法有效發揮NumPy優勢,盡量避免使用
ndarray數組的建立方法
從Python中清單,元組等類型建立ndarray數組
使用NumPy中函數建立ndarray數組,如arange,onse,zeros等
從位元組流(raw bytes)中建立ndarray數組
從檔案中讀取特定格式,建立ndarray數組
(1)從Python中清單,元組或者清單和元組混合類型等類型建立ndarray數組
x = np.array(list/tuple)
x = np.array(list/tuple,dtype = np.float32)
當np.array()不指定dtype時,NumPy将根據情況關聯一個dtype類型
(2)使用NumPy中函數建立ndarray數組,如:arrange,ones,zeros等
函數:
np.arange(n):類似range()函數,傳回ndarray類型,元素從0到n-1
np.ones(shape):根據shape從一個全1數組,shape是元組類型
np.zeros(shape):根據shape從一個全0數組,shape是元組類型
np.full(shape,val):根據shape從一個數組,每個元素的值是val
np.eye(n):建立一個正方的n*n機關矩陣,對角線為1,其餘為0
函數:
np.ones_like(a):根據數組a的形狀生成一個全1數組
np.zeros_like(a):根據數組a的形狀生成一個全0數組
np.full_like(a,val):根據數組a的形狀生成一個數組,每個元素值都是val
函數:
np.linspace():根據起止資料等間距填充資料,行成數組
np.concatenate() :将連個或者多個數組合并成一個新的數組
對于建立後的ndarray數組,可以對其進行次元變換和元素類型變換
ndarray數組的次元變換
.reshape(shape):不改變數組元素,傳回一個shape形狀的數組,原數組不變
.resize(shape):與.reshape()功能一緻,單修改原數組
.swapaxes(ax1,ax2):将數組n個次元兩個次元揀選調換
.flatten():對數組進行降維,傳回折疊後的一個一維數組,原數組不變
ndarray數組的類型變換
new_a = a.astype(new_type)
astype()方法一定會建立新的數組(原始資料的一個拷貝)即使兩個類型一緻
ndarray數組操作:
索引和切片
一維數組的索引和切片:與Python的清單類似
a[1:4:2]:起始編号:終止編号(不含):步長 3元素冒号分割
多元數組索引
:選擇整個次元
每個次元切片方法與一維數組相同
數組運算
數組與标量之間的運算
數組與标量之間的運算作用于數組的每一個元素
a.mean()
NumPy一進制函數
對ndarray中的資料執行元素級運算的函數
函數:
np.abs(x) np.fabs(x):計算數組各元素的絕對值
np.sqrt(x) 計算數組各元素的平方根
np.square(x) 計算數組各元素的平方
np.log(x) np.log10(x) np.log2(x) 計算數組各元素的自然對數,10為底和2為底對象
NumPy資料存儲
csv檔案
np.savetxt(frame,array,fmt='%.18e',delimiter=None)
frame:檔案,字元串,或者産生器,可以是.gz或者.bz2壓縮檔案
array:存入檔案的數組
fmt:寫入檔案的格式
delimiter:分割字元串,預設是空格
np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=True):讀入資料