簡述Numpy

numpy的數組對象ndarray

  • np.array()生成一個ndarray數組
  • np.array()輸出成[]形式,元素由空格分割
  • 軸(axis):保存數據的維度
  • 秩(rank):軸的數量

ndarray對象的屬性

屬性 說明
.ndim 秩,即軸的數量或維度的數量
.shape ndarray對象的尺度,對於矩陣,n行m列
.size ndarray對象元素的個數,至關於.shape中n*m的值
.dtype ndarray對象的元素類型
.itemsize ndarray對象中每一個元素的大小,以字節爲單位

clipboard.png

ndarray的元素類型

數據類型 說明
bool 布爾類型,True或False
intc 與C語言中的int類型一致,通常是int32或int64
intp 用於索引的整數,與C語言中ssize_t一致,int32或int64
int8 字節長度的整數,取值:[-128, 127]
int16 16位字節長度的整數,取值:[-32768, 32767]
int32 32位字節長度的整數,取值:[-2^31, 2^31-1]
int64 64位字節長度的整數,取值:[-2^63, 2^63-1]
uint8 8位無符號整數,取值:[0,255]
uint16 16位無符號整數,取值:[0,65535]
uint32 32位無符號整數,取值:[0,2^32-1]
uint64 64位無符號整數,取值:[0,2^64-1]
float16 16位半精度浮點數:1位符號位,5位指數,10位尾數
float32 32位半精度浮點數:1位符號位,8位指數,23位尾數
float64 64位半精度浮點數:1位符號位,11位指數,52位尾數
complex64 複數類型,實部和虛部都是32位浮點數
complex128 複數類型,實部和虛部都是64位浮點數

ndarray數組的建立方法

1.從python中的列表、元組等類型建立ndarray數組

x = np.array(list/tuple)
x = np.array(list/tuple, dtype = np.float32)
當np.array()不指定dtype時,numpy將根據數據狀況關聯一個dtype類型

clipboard.png

2.使用numpy中函數建立ndarray數組,如:arange, 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() 將兩個或多個數組合併成一個新的數組

clipboard.png

ndarray數組的維度變換

方法 說明
.reshape(shape) 不改變數組元素,返回一個shape形狀的數組,原數組不變
.resize(shape) 與.reshape()功能一致,但修改原數組
.swapaxes(ax1,ax2) 將數組n個維度中的兩個維度進行調換
.flatten() 對數組進行降維,返回摺疊後的一維數組,原數組不變

clipboard.png

ndarray數組的類型變換

new_a = a.astype(new_type)
astype()方法必定會建立新的數組(原始數據的一個拷貝),即便兩個類型一致python

clipboard.png

ndarray數組向列表的轉換

ls = a.tolist()數組

clipboard.png

Numpy一元函數

對ndarray中的數據執行元素級運算的函數dom

函數 說明
np.abs(x) np.fabs(x) 計算數組各元素的絕對值
np.sqrt(x) 計算數組各元素的平方根
np.square(x) 計算數組各元素的平方
np.log(x) np.log10(x) np.log2(x) 計算數組各元素的天然對數、10底對數和2底對數
np.ceil(x) np.floor(x) 計算數組各元素的ceiling值或floor值
np.rint(x) 計算數組各元素的四捨五入值
np.modf(x) 將數組各元素的小數和整數部分以兩個獨立數組的形式返回
np.cos(x) np.cosh(x) np.sin(x) np.sinh(x) np.tan(x) np.tanh(x) 計算各元素的普通型和雙曲型三角函數
np.exp(x) 計算數組各元素的指數值
np.sign(x) 計算數組各元素的符號值,1(+),0,-1(-)

numpy二元函數

函數 說明
+ -* / ** 兩個數組各元素進行對應運算
np.maximum(x,y) np.fmax() 元素級的最大值計算
np.minimum(x,y) np.fmin() 元素級的最小值計算
np.mod(x,y) 元素級的模運算
np.copysign(x,y) 將數組y中各元素值的符號賦值給數組x對應元素
> < >= <= == != 算術比較,產生布爾型數組

clipboard.png

數據的CSV文件存取

1.np.savetxt(frame, array, fmt='%.18e', delimiter=None)函數

  • frame:文件、字符串或產生器,能夠是.gz或.bz2的壓縮文件
  • array:存入文件的數組
  • fmt:寫入文件的格式, 例如:%d %.2f %.18e
  • delimiter:分割字符串,默認是任何空格

2.np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)ui

  • frame:文件、字符串或產生器,能夠是.gz或.bz2的壓縮文件
  • dtype:數據類型,可選
  • delimiter:分割字符串,默認是任何空格
  • unpack:若是是True,讀入屬性將分別寫入不一樣變量

3.CSV文件的侷限性spa

  • CSV只能有效存儲一維和二維數組
  • np.savetxt() np.loadtxt()只能有效存取一維和二維數組

clipboard.png

多維數據的存取

1. a.tofile(frame, sep='', format='%s')3d

  • frame:文件、字符串
  • sep:數據分割字符串,若是是空串,寫入文件爲二進制
  • format:寫入數據的格式

2. np.fromfile(frame, dtype=float, count=-1, sep='')
frame:文件、字符串
dtype:讀取的數據類型
count:讀取元素個數、-1表示讀取整個文件
sep:數據分割字符串,若是是空串,寫入文件爲二進制
注意:該方法須要讀取時知道存入文件時數組的維度和元素類型,a.tofile()和np.fromfile()須要配合使用orm

numpy的便捷文件存取

1. np.save(fname, array)或np.savez(fname, array)對象

  • fname:文件名,以.npy爲拓展名,壓縮拓展名爲.npz
  • array:數組變量

2.np.load(fname)blog

  • fname:文件名,以.npy爲拓展名,壓縮拓展名爲.npz

Numpy的隨機數函數(np.random)

函數 說明
rand(d0,d1,...,dn) 根據d0-dn建立隨機數數組,浮點數,[0,1),均勻分佈
randn(d0,d1,...,dn) 根據d0-dn建立隨機數數組,標準正態分佈
randint(low, high, shape) 根據shape建立隨機整數或整數數組,範圍是[low,high)
seed(s) 隨機數種子,s是給定的種子值
shuffle(a) 根據數組a的第一軸進行隨機排列,改變數組x
permutation(a) 根據數組a的第一軸產生一個新的亂序數組,不改變數組x
choice(a,size,replace,p) 從一維數組a中以機率p抽取元素,造成size形狀新數組,replace表示是否能夠重用元素,默認爲False
uniform(low,high, size) 產生具備均勻分佈的數組,low起始值,high結束值,size形狀
normal(loc,scale,size) 產生具備正態分佈的數組,loc均值,scale標準差,size形狀
poisson(lam, size) 產生具備泊松分佈的數組,lam隨機事件發生率,size形狀

Numpy的統計函數

函數 說明
sum(a, axis=None) 根據給定軸axis計算數組a相關元素之和,axis整數或元組
mean(a, axis=None) 根據給定軸axis計算數組a相關元素的指望,axis整數或元組
average(a, axis=None, weights=None) 根據給定軸axis計算數組a相關元素的加權平均值
std(a, axis=None) 根據給定軸axis計算數組a相關元素的標準差
var(a, axis=None) 根據給定軸axis計算數組a相關元素的方差
min(a) max(a) 計算數組a中元素的最小值、最大值
argmin(a) argmax(a) 計算數組a中元素最小值、最大值的降一維後的下標
unravel_index(index, shape) 根據shape將一維下標index轉換成多維下標
ptp(a) 計算數組a中元素最大值與最小值的差
median(a) 計算數組a中元素的中位數(中值)

clipboard.png

Numpy的梯度函數

函數 說明
np.gradient(f) 計算數組f中元素的梯度,當f爲多維時,返回每一個維度的梯度

clipboard.png

相關文章
相關標籤/搜索