Python中的Numpy(Numerical Python)是一個開源的數值計算庫,它是Python數據分析的基礎庫之一。而ndarray是Numpy中用於處理多維數組的核心類,提供了許多常用的操作方法,支持矢量化運算,性能優越,因此被廣泛應用於科學計算、機器學習等領域。本文就來介紹一些Python中ndarray的常用操作和應用場景。
一、創建數組
我們可以使用numpy中的array()函數創建一個ndarray對象,這個函數接受一些序列作為輸入(列表、元組),生成一個numpy數組。數組的維度通過序列中元素的嵌套深度來確定。
import numpy as np arr = np.array([1, 2, 3]) # 一維數組 print(arr) # 輸出:[1 2 3] arr = np.array([[1, 2, 3], [4, 5, 6]]) # 二維數組 print(arr) # 輸出:[[1 2 3] # [4 5 6]] arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 三維數組 print(arr) # 輸出:[[[1 2] # [3 4]] # # [[5 6] # [7 8]]]
我們也可以使用Numpy中一些特殊的函數來創建一些常見的數組,比如全0數組、全1數組和單位矩陣等。
import numpy as np arr_zero = np.zeros((2, 3)) print(arr_zero) # 輸出:[[0. 0. 0.] # [0. 0. 0.]] arr_one = np.ones((2, 3)) print(arr_one) # 輸出:[[1. 1. 1.] # [1. 1. 1.]] arr_eye = np.eye(3) print(arr_eye) # 輸出:[[1. 0. 0.] # [0. 1. 0.] # [0. 0. 1.]]
二、索引和切片
訪問ndarray中的元素可以通過索引和切片進行操作。例如,可以使用中括號內的索引來訪問二維數組中的元素。
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) print(arr[0, 0]) # 輸出:1 print(arr[0, 1]) # 輸出:2 print(arr[1, 1]) # 輸出:5
我們也可以使用切片來獲取一部分數組。
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr[1:4]) # 輸出:[2 3 4] arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(arr[:2, 1:]) # 輸出: # [[2 3] # [5 6]]
三、形狀操作
我們可以使用ndarray對象的shape屬性來獲取數組的形狀,也可以使用reshape()方法對數組的形狀進行操作。
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) print(arr.shape) # 輸出:(2, 3) arr = np.array([1, 2, 3, 4, 5, 6]) arr = arr.reshape(2, 3) print(arr) # 輸出:[[1 2 3] # [4 5 6]]
通過reshape()方法,我們可以將一個數組改變成我們想要的形狀。
四、常用函數
Numpy提供了很多常用的函數,例如排序函數、聚合函數、廣播函數等。
(1)排序函數
數組排序是數據處理中的重要任務之一,Numpy提供了sort()函數來對數組進行排序,並且可以由小到大或由大到小排序。
import numpy as np arr = np.array([3, 1, 4, 2, 5]) arr = np.sort(arr) # 由小到大排序 print(arr) # 輸出:[1 2 3 4 5]
(2)聚合函數
對數組的聚合操作是很常見的操作,Numpy提供了很多聚合函數,例如sum()、max()、min()、mean()等。
import numpy as np arr = np.array([2, 4, 6, 8]) sum = np.sum(arr) max = np.max(arr) min = np.min(arr) mean = np.mean(arr) print(sum, max, min, mean) # 輸出:20 8 2 5.0
(3)廣播函數
廣播是Numpy中很重要的一個機制,它可以用來對形狀不同但是滿足一定條件的數組進行運算。
import numpy as np A = np.array([[1, 2], [3, 4], [5, 6]]) B = np.array([10, 20]) result = A * B.reshape(2, 1) print(result) # 輸出:[[10 20] # [60 80] # [150 180]]
在這個例子中,B數組被擴展成一個3×2的數組,然後與A數組進行逐元素的乘法運算。這個功能在機器學習中非常常見。
五、應用場景
ndarray被廣泛應用於科學計算、機器學習等領域。在這裡,我們介紹一些常見的應用場景。
(1)圖像處理
在圖像處理中,常常需要用到ndarray來對圖像進行表示和處理。例如,我們可以使用opencv庫讀取一張圖像,然後將圖像轉化為numpy數組,進行處理和顯示。
import cv2 import numpy as np img = cv2.imread('test.png', cv2.IMREAD_GRAYSCALE) # 讀取圖像,轉成灰度圖像 img_arr = np.array(img) # 將圖像轉換成數組 print(img_arr.shape) # 輸出:(512, 512) cv2.imshow('Image', img_arr) # 顯示圖像 cv2.waitKey(0) cv2.destroyAllWindows()
(2)機器學習
在機器學習中,數據通常都是以數組的形式存儲和處理的。ndarray能夠滿足機器學習的需要,支持矢量運算,提高了計算效率。例如,我們可以用ndarray來存儲和處理訓練數據和標籤數據。
import numpy as np # 加載訓練數據和標籤數據 train_data = np.load('train_data.npy') train_label = np.load('train_label.npy') # 數據預處理 train_data = train_data.astype('float32') / 255.0 train_label = train_label.astype('int32')
(3)科學計算
在科學計算中,數組的處理是非常常見的。例如,我們可以使用ndarray來處理一些大量的科學數據,如物理實驗數據、氣象數據等。
import numpy as np data = np.genfromtxt('data.csv', delimiter=',') # 從CSV文件中讀取數 mean = np.mean(data) # 計算平均值 std = np.std(data) # 計算標準差 print('Mean:', mean) print('Std:', std)
這個例子中,我們從CSV文件中讀取數據,然後計算數據的平均值和標準差。這個方法在分析一些大量數據的時候非常實用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/293875.html