溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python的numpy中有哪些常用的的函數

發布時間:2021-06-21 14:30:49 來源:億速云 閱讀:197 作者:chen 欄目:編程語言
# Python的NumPy中有哪些常用的函數

## 目錄
1. [NumPy簡介](#numpy簡介)
2. [數組創建函數](#數組創建函數)
3. [數組操作函數](#數組操作函數)
4. [數學運算函數](#數學運算函數)
5. [統計函數](#統計函數)
6. [線性代數函數](#線性代數函數)
7. [隨機數生成函數](#隨機數生成函數)
8. [文件輸入輸出函數](#文件輸入輸出函數)
9. [其他實用函數](#其他實用函數)
10. [總結](#總結)

## NumPy簡介

NumPy(Numerical Python)是Python科學計算的基礎庫,提供了高性能的多維數組對象和用于操作這些數組的工具。它是數據科學、機器學習、科學計算等領域的核心庫之一。

NumPy的主要特點包括:
- 強大的N維數組對象ndarray
- 廣播功能函數
- 整合C/C++/Fortran代碼的工具
- 線性代數、傅里葉變換、隨機數生成等功能

```python
import numpy as np  # 常規導入方式

數組創建函數

1. 基礎創建函數

函數 描述 示例
np.array() 從列表或元組創建數組 np.array([1,2,3])
np.zeros() 創建全零數組 np.zeros((3,3))
np.ones() 創建全1數組 np.ones((2,2))
np.empty() 創建未初始化數組 np.empty((3,2))
np.arange() 類似range的數組 np.arange(0,10,2)
np.linspace() 等間隔數組 np.linspace(0,1,5)
np.eye() 單位矩陣 np.eye(3)
np.diag() 對角矩陣 np.diag([1,2,3])

2. 特殊數組創建

# 從已有數據創建
np.copy(a)  # 數組副本
np.fromfunction(func, shape)  # 通過函數創建

# 網格生成
np.mgrid[0:5,0:5]  # 密集網格
np.ogrid[0:5,0:5]  # 開放網格

數組操作函數

1. 形狀操作

函數 描述 示例
reshape() 改變數組形狀 arr.reshape(3,4)
resize() 改變數組形狀和大小 np.resize(arr, (5,5))
flatten() 展平為一維數組 arr.flatten()
ravel() 返回視圖的展平數組 arr.ravel()
transpose() 轉置數組 arr.transpose()
swapaxes() 交換兩個軸 arr.swapaxes(0,1)

2. 數組連接與分割

# 連接
np.concatenate((a1,a2), axis=0)
np.vstack((a1,a2))  # 垂直堆疊
np.hstack((a1,a2))  # 水平堆疊
np.column_stack((a1,a2))  # 按列堆疊

# 分割
np.split(arr, indices_or_sections)
np.vsplit(arr, 3)  # 垂直分割
np.hsplit(arr, 2)  # 水平分割

3. 數組增刪

np.append(arr, values, axis=None)
np.insert(arr, obj, values, axis=None)
np.delete(arr, obj, axis=None)
np.unique(arr)  # 去重

數學運算函數

1. 基礎數學運算

函數 描述 示例
add() 加法 np.add(a,b)
subtract() 減法 np.subtract(a,b)
multiply() 乘法 np.multiply(a,b)
divide() 除法 np.divide(a,b)
power() 冪運算 np.power(a,2)
mod() 取模 np.mod(a,3)
abs() 絕對值 np.abs(a)

2. 三角函數

np.sin(arr)  # 正弦
np.cos(arr)  # 余弦
np.tan(arr)  # 正切
np.arcsin(arr)  # 反正弦
np.arccos(arr)  # 反余弦
np.arctan(arr)  # 反正切
np.hypot(x1, x2)  # 歐幾里得范數

3. 指數對數函數

np.exp(arr)  # e的冪次
np.expm1(arr)  # exp(x)-1
np.log(arr)  # 自然對數
np.log10(arr)  # 10為底對數
np.log2(arr)  # 2為底對數
np.log1p(arr)  # log(1+x)

4. 舍入函數

np.around(arr, decimals=0)  # 四舍五入
np.floor(arr)  # 向下取整
np.ceil(arr)  # 向上取整
np.trunc(arr)  # 截斷小數部分
np.rint(arr)  # 四舍五入到整數

統計函數

1. 基礎統計

函數 描述 示例
amin() 沿軸最小值 np.amin(arr, axis=0)
amax() 沿軸最大值 np.amax(arr, axis=1)
ptp() 范圍(最大值-最小值) np.ptp(arr)
percentile() 百分位數 np.percentile(arr, 75)
median() 中位數 np.median(arr)
mean() 算術平均數 np.mean(arr)
average() 加權平均數 np.average(arr, weights=w)

2. 方差與標準差

np.var(arr)  # 方差
np.std(arr)  # 標準差
np.cov(m, y=None)  # 協方差矩陣
np.corrcoef(x, y=None)  # 相關系數

3. 直方圖統計

np.histogram(a, bins=10)  # 直方圖
np.bincount(x, weights=None)  # 整型數組的計數
np.digitize(x, bins)  # 返回每個值所屬的bin索引

線性代數函數

1. 矩陣操作

函數 描述 示例
dot() 點積 np.dot(a,b)
vdot() 向量點積 np.vdot(a,b)
inner() 內積 np.inner(a,b)
outer() 外積 np.outer(a,b)
matmul() 矩陣乘法 np.matmul(a,b)
tensordot() 張量點積 np.tensordot(a,b)

2. 矩陣分解與求逆

np.linalg.inv(a)  # 矩陣求逆
np.linalg.pinv(a)  # 偽逆矩陣
np.linalg.det(a)  # 行列式
np.linalg.eig(a)  # 特征值和特征向量
np.linalg.svd(a)  # 奇異值分解
np.linalg.qr(a)  # QR分解
np.linalg.cholesky(a)  # Cholesky分解

3. 線性方程組

np.linalg.solve(a, b)  # 解線性方程組
np.linalg.lstsq(a, b)  # 最小二乘解
np.linalg.norm(x)  # 范數計算

隨機數生成函數

1. 基礎隨機數

函數 描述 示例
rand() [0,1)均勻分布 np.random.rand(3,2)
randn() 標準正態分布 np.random.randn(100)
randint() 隨機整數 np.random.randint(0,10,size=5)
random() [0,1)隨機浮點數 np.random.random(10)
choice() 隨機選擇 np.random.choice(a, size=3)
shuffle() 隨機打亂 np.random.shuffle(arr)
permutation() 隨機排列 np.random.permutation(10)

2. 概率分布

# 連續分布
np.random.uniform(low=0.0, high=1.0)  # 均勻分布
np.random.normal(loc=0.0, scale=1.0)  # 正態分布
np.random.exponential(scale=1.0)  # 指數分布

# 離散分布
np.random.binomial(n=10, p=0.5)  # 二項分布
np.random.poisson(lam=1.0)  # 泊松分布

3. 隨機種子

np.random.seed(42)  # 設置隨機種子
np.random.get_state()  # 獲取隨機狀態
np.random.set_state(state)  # 設置隨機狀態

文件輸入輸出函數

1. 文本文件

函數 描述 示例
loadtxt() 從文本加載 np.loadtxt('data.txt')
savetxt() 保存到文本 np.savetxt('out.txt', arr)
genfromtxt() 從文本生成數組 np.genfromtxt('data.csv', delimiter=',')

2. 二進制文件

np.save('array.npy', arr)  # 保存為.npy
np.load('array.npy')  # 加載.npy文件
np.savez('arrays.npz', a=arr1, b=arr2)  # 保存多個數組
np.savez_compressed('arrays.npz', a=arr1)  # 壓縮保存

3. 內存映射

np.memmap(filename, dtype='float32', mode='r', shape=(100,100))

其他實用函數

1. 索引與切片

np.where(condition, [x, y])  # 條件選擇
np.take(a, indices)  # 按索引獲取元素
np.select(condlist, choicelist)  # 多條件選擇
np.nonzero(a)  # 非零元素索引

2. 邏輯運算

np.logical_and(x1, x2)
np.logical_or(x1, x2)
np.logical_not(x)
np.logical_xor(x1, x2)
np.all(a)  # 所有元素為True
np.any(a)  # 任一元素為True

3. 數組比較

np.equal(a, b)  # ==
np.not_equal(a, b)  # !=
np.greater(a, b)  # >
np.greater_equal(a, b)  # >=
np.less(a, b)  # <
np.less_equal(a, b)  # <=

4. 集合操作

np.intersect1d(ar1, ar2)  # 交集
np.union1d(ar1, ar2)  # 并集
np.setdiff1d(ar1, ar2)  # 差集
np.setxor1d(ar1, ar2)  # 對稱差集
np.in1d(ar1, ar2)  # 測試成員

5. 廣播與矢量化

np.broadcast(arr1, arr2)  # 廣播對象
np.vectorize(pyfunc)  # 矢量化函數

總結

NumPy提供了豐富的函數庫,涵蓋了從數組創建、數學運算到線性代數和隨機數生成的各個方面。掌握這些常用函數能夠顯著提高科學計算和數據分析的效率。本文介紹了約150個常用NumPy函數,但NumPy的功能遠不止于此。建議讀者在實際應用中結合官方文檔深入探索更多高級功能。

學習建議

  1. 從基礎數組操作開始練習
  2. 熟悉廣播機制和矢量化運算
  3. 掌握線性代數和統計相關函數
  4. 在實際項目中應用這些函數
  5. 查閱官方文檔獲取最新功能

NumPy作為Python科學計算生態系統的基石,其重要性不言而喻。希望本文能幫助您更好地理解和使用NumPy的強大功能。

# 示例:綜合應用
arr = np.random.randn(100, 100)  # 創建100x100正態分布數組
arr = arr * 10 + 5  # 線性變換
mean = np.mean(arr)  # 計算均值
std = np.std(arr)  # 計算標準差
normalized = (arr - mean) / std  # 標準化
eigenvalues = np.linalg.eig(normalized)  # 特征值分解

注意:本文基于NumPy 1.21+版本,部分函數在早期版本中可能不可用或行為不同。 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女