1. 程式人生 > >Python中numpy庫入門

Python中numpy庫入門

Python中numpy

Numpy是一個開源的Python科學計算基礎庫

以下學習自中國大學MOOC 嵩天 《Python資料分析與展示》

一.Numpy庫入門

1.Numpy的引入
import numpy as np

使用別名可以縮短在程式中匯入numpy方法的長度,np為約定名

2.N維資料物件:ndarray
  • 陣列物件可以去掉元素運算所需的迴圈,使一維向量更像單個數據
  • 設定專門的陣列物件可以提升此類應用的運算速度
  • 陣列物件採用相同的資料型別,可以幫助節省運算和儲存空間
  • 程式中別名為array
3.ndarray物件的屬性
屬性 含義
.ndim 維度的數量
.shape ndarray物件的尺度,n行m列
.size ndarray物件的個數,其.shape中n*m
.dtype ndarray物件的元素型別
.itemsize ndarray物件中每個元素的大小,以位元組為單位
3.ndarray物件的元素型別
資料型別 說明
bool 布林型別,True或False
intc 與C語言中的int型別一致,一般是int32或int64
intp 用於索引的整數,與C語言中ssize_t一致,int32或int64
int8 位元組長度的整數,取值:[‐128, 127]
int16 16位長度的整數,取值:[‐32768, 32767]
int32 32位長度的整數,取值:[‐231
, 231 ‐1]
int64 64位長度的整數,取值:[‐263 , 263 ‐1]
uint8 8位無符號整數,取值:[0, 255]
uint16 16位無符號整數,取值:[0, 65535]
uint32 32位無符號整數,取值:[0, 232 ‐1]
uint64 32位無符號整數,取值:[0, 264 ‐1]
float16 16位半精度浮點數:1位符號位,5位指數,10位尾數
float32 32位半精度浮點數:1位符號位,8位指數,23位尾數
float64 64位半精度浮點數:1位符號位,11位指數,52位尾數
complex64 複數型別,實部和虛部都是32位浮點數
complex128 複數型別,實部和虛部都是64位浮點數

這麼多種的元素型別的存在因為:

  • 科學計算資料繁多,儲存和效能要求極高
  • 有利於合理使用儲存空間以及優化效能

二.ndarray陣列的建立

1.使用原始結構型別建立
# 通過列表建立ndarray
a = np.array([1,2,3,4,5,6])
print(a)
# 通過元組建立ndarray
b = np.array((1,2,3,4,5,6))
print(b)

在這裡插入圖片描述

2.使用numpy函式建立

常規方法

函式 說明
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陣列的變換

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

例項:
建立一個三維陣列a
在這裡插入圖片描述

.reshape(shape) 不修改原陣列

在這裡插入圖片描述

.resize(shape) 修改原陣列

在這裡插入圖片描述

.swapaxes(ax1,ax2)

二維陣列:
在這裡插入圖片描述
三維陣列:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

.flatten() 將原數(原陣列維度>1)組降維,一維還是原陣列

在這裡插入圖片描述

2.型別變換
b = a.astype(new_type)

在這裡插入圖片描述

3.陣列向列表的轉換
a_list = a.tolist()

在這裡插入圖片描述

四.ndarray陣列的操作(索引與切片)

1.一維陣列(同列表)

在這裡插入圖片描述

2.多維陣列

兩個逗號隔開三個維度,分別進行操作
在這裡插入圖片描述

五.陣列與標量之間的運算

陣列與標量之間的運算作用於陣列的每一個元素

一原函式

方法 說明
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(‐)

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

二原函式

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

原陣列:
在這裡插入圖片描述
部分例項:
在這裡插入圖片描述