圖片來源:(https://forum.gamer.com.tw/Co.php?bsn=43473&sn=45361)
單一元素的存取
直接使用中括號,並指定要存取的索引值
索引值從 0 開始
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[2]) # 輸出:3
多維陣列的存取
使用逗號分隔不同維度的索引
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d[1, 2]) # 輸出:6
arr[start:stop:step]
start |
起始索引(包含) |
---|---|
stop |
結束索引(不包含) |
step |
步長 |
arr = np.arange(10)
print(arr[2:5]) # 輸出: [2 3 4]
print(arr[::2]) # 輸出: [0 2 4 6 8] (取偶數索引的元素)
創建布林陣列
:使用條件判斷產生一個與原陣列形狀相同的布林陣列使用布林陣列索引
:將布林陣列作為索引,取出對應為 True 的元素arr = np.array([1, 2, 3, 4, 5])
mask = arr > 3
print(arr[mask]) # 輸出: [4 5]
import numpy as np
# 創建一個二維陣列
arr = np.arange(25).reshape(5, 5)
print(arr)
輸出 [[ 0 1 2 3 4][ 5 6 7 8 9][10 11 12 13 14][15 16 17 18 19][20 21 22 23 24]]
# 索引第2行第3列的元素
print(arr[1, 2])
輸出 7
# 切片取出第2行到第4行,第1列到第3列的子陣列
print(arr[1:4, 0:3])
輸出
[[ 5 6 7]
[10 11 12]
[15 16 17]]
# 找出大於15的元素
mask = arr > 15
print(arr[mask])
輸出 [16 17 18 19 20 21 22 23 24]
# 將大於15的元素替換為0
arr[mask] = 0
print(arr)
輸出
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 0 0 0 0]
[ 0 0 0 0 0]]
從檔案讀取
# 從 CSV 檔案讀取
data = np.loadtxt('data.csv', delimiter=',')
常用函數
np.loadtxt()
:讀取由空格或其他分隔符分隔的ASCII文本數據np.genfromtxt()
:功能比 np.loadtxt()更強大,可以處理缺失值、不同數據類型等更複雜的情況np.load()
:讀取以 .npy 格式保存的Numpy二進位檔案。np.fromfile()
:從二進位檔案中讀取數據從文本文件讀取
np.loadtxt()
import numpy as np
data = np.loadtxt('data.txt', delimiter=',') # 以逗號分隔
np.genfromtxt()
data = np.genfromtxt('data.csv', delimiter=',', skip_header=1, missing_values='NA', filling_values=0)
從 CSV 文件讀取
pandas.read_csv()
Pandas 是另一個強大的數據分析庫,其 read_csv() 函數專門用於讀取 CSV 文件,並返回一個 DataFrame 對象
import pandas as pd
df = pd.read_csv('data.csv')
data = df.values # 將 DataFrame 轉換為 Numpy 陣列
從二進位文件讀取
np.load()
讀取 Numpy 之前保存的 .npy 或 .npz 文件
data = np.load('data.npy')
從其他格式讀取
scipy.io.loadmat()
:讀取 MATLAB 的 .mat 文件h5py
:讀取 HDF5 格式的文件重要參數
delimiter |
指定分隔符 |
---|---|
skiprows |
跳過指定行數 |
usecols |
指定要讀取的列 |
dtype |
指定數據類型 |
missing_values |
指定缺失值的表示方式 |
filling_values |
填充缺失值 |
從 CSV 文件讀取數據
import numpy as np
# 讀取 CSV 文件,以逗號分隔,跳過第一行,將缺失值填充為0
data = np.genfromtxt('sales_data.csv', delimiter=',', skip_header=1, filling_values=0)
# 顯示讀取的數據
print(data)