2.1 ?numpy介紹
numpy是Python中科學計算的基礎包。它是一個Python庫,提供多維數組對象、各種派生對象(例如掩碼數組和矩陣)以及用于對數組進行快速操作的各種方法,包括數學、邏輯、形狀操作、排序、選擇、I/O 、離散傅里葉變換、基本線性代數、基本統計運算、隨機模擬等等。
numpy的部分功能如下:
- ndarray,一個具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組。
- 用于對整組數據進行快速運算的標準數學函數(無需編寫循環)。
- 用于讀寫磁盤數據的工具以及用于操作內存映射文件的工具。
- 用于集成由C、C++、Fortran等語言編寫的代碼的API。
為什么需要Numpy?
Python # 原生Python列表?vs NumPy數組性能對比 import time import numpy as np
py_list = list(range(1000000)) np_arr = np.arange(1000000)
# 計算平方和 start = time.time() sum([x**2 for x in py_list]) print(f"Python列表耗時: {time.time()-start:.4f}s")
start = time.time() np.sum(np_arr**2) print(f"NumPy數組耗時: {time.time()-start:.4f}s") |
輸出示例:
Plain Text Python列表耗時: 0.1256s ? NumPy數組耗時: 0.0023s |
安裝numpy包
如果在Pycharm中加載不出來,可以通過如下命令安裝
Python C:\Users\fuxiaofeng>conda activate python-2025-conda (python-2025-conda) C:\Users\fuxiaofeng>conda install numpy 2.1 ?numpy介紹 numpy是Python中科學計算的基礎包。它是一個Python庫,提供多維數組對象、各種派生對象(例如掩碼數組和矩陣)以及用于對數組進行快速操作的各種方法,包括數學、邏輯、形狀操作、排序、選擇、I/O 、離散傅里葉變換、基本線性代數、基本統計運算、隨機模擬等等。 numpy的部分功能如下: - ndarray,一個具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組。
- 用于對整組數據進行快速運算的標準數學函數(無需編寫循環)。
- 用于讀寫磁盤數據的工具以及用于操作內存映射文件的工具。
- 用于集成由C、C++、Fortran等語言編寫的代碼的API。
為什么需要Numpy? Python # 原生Python列表?vs NumPy數組性能對比 import time import numpy as np
py_list = list(range(1000000)) np_arr = np.arange(1000000)
# 計算平方和 start = time.time() sum([x**2 for x in py_list]) print(f"Python列表耗時: {time.time()-start:.4f}s")
start = time.time() np.sum(np_arr**2) print(f"NumPy數組耗時: {time.time()-start:.4f}s") |
輸出示例: Plain Text Python列表耗時: 0.1256s ? NumPy數組耗時: 0.0023s |
安裝numpy 
如果在Pycharm中加載不出來,可以通過如下命令安裝 Python C:\Users\fuxiaofeng>conda activate python-2025-conda (python-2025-conda) C:\Users\fuxiaofeng>conda install numpy 2.1 ?numpy介紹 numpy是Python中科學計算的基礎包。它是一個Python庫,提供多維數組對象、各種派生對象(例如掩碼數組和矩陣)以及用于對數組進行快速操作的各種方法,包括數學、邏輯、形狀操作、排序、選擇、I/O 、離散傅里葉變換、基本線性代數、基本統計運算、隨機模擬等等。 numpy的部分功能如下: - ndarray,一個具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組。
- 用于對整組數據進行快速運算的標準數學函數(無需編寫循環)。
- 用于讀寫磁盤數據的工具以及用于操作內存映射文件的工具。
- 用于集成由C、C++、Fortran等語言編寫的代碼的API。
為什么需要Numpy? Python # 原生Python列表?vs NumPy數組性能對比 import time import numpy as np
py_list = list(range(1000000)) np_arr = np.arange(1000000)
# 計算平方和 start = time.time() sum([x**2 for x in py_list]) print(f"Python列表耗時: {time.time()-start:.4f}s")
start = time.time() np.sum(np_arr**2) print(f"NumPy數組耗時: {time.time()-start:.4f}s") |
輸出示例: Plain Text Python列表耗時: 0.1256s ? NumPy數組耗時: 0.0023 |
darray 2.2.1 ndarray 的核心特性 - 多維性:支持?0 維(標量)、1 維(向量)、2 維(矩陣)及更高維數組。
- 同質性:所有元素類型必須一致(通過?dtype?指定)。
- 高效性:基于連續內存塊存儲,支持向量化運算。
2.2.2 ?ndarray的屬性 核心屬性(必須掌握) (假設?arr = np.array([[1, 2], [3, 4]])) 屬性名稱 | 通俗解釋 | 使用示例 | 輸出結果 | 實際用途 | shape | 數組的形狀:行數和列數(或更高維度的尺寸)。 | arr.shape | (2, 2) | 查看或調整數組結構(如變形)。 | ndim | 維度數量:數組是幾維的(1維、2維、3維等)。 | arr.ndim | 2 | 判斷數組是向量、矩陣還是高維數據。 | size | 總元素個數:數組中所有元素的總數。 | arr.size | 4 | 快速計算元素總量。 | dtype | 元素類型:數組中元素的類型(整數、浮點數等)。 | arr.dtype | int64(或?int32) | 確保計算時類型一致(如避免整數除法問題)。 |
- shape:就像問數組“長什么樣”。
- 示例:arr = np.array([[1, 2], [3, 4]])?的?shape?是?(2, 2),表示2行2列。
- 變形操作:arr.reshape(4, 1)?會變成4行1列的數組。
- ndim:判斷數組是“幾維空間”。
- 一維數組(向量):ndim=1,如?[1, 2, 3]。
- 三維數組(立體):ndim=3,如RGB圖片數據。
- dtype:確保所有元素是“同一類型”。
- 如果數組中有小數,dtype?會自動變成?float64(避免精度丟失)。
- 強制指定類型:np.array([1, 2], dtype=np.float32)。
Python import numpy as np
# 創建一個3x2的二維數組 arr = np.array([[1, 2], [3, 4], [5, 6]])
print("形狀?shape:", arr.shape) ???# 輸出?(3, 2) print("維度?ndim:", arr.ndim) ????# 輸出?2 print("總元素?size:", arr.size) ??# 輸出?6 print("元素類型?dtype:", arr.dtype) ?# 輸出?int64 |
進階屬性(了解即可) 屬性名稱 | 通俗解釋 | 示例代碼 | 輸出結果 | 應用場景 | T | 轉置:行變列,列變行。 | arr.T | [[1, 3], [2, 4]] | 矩陣運算(如矩陣乘法)。 | itemsize | 單個元素占用的內存字節數。 | arr.itemsize | 8(int64?類型占8字節) | 優化內存占用時參考。 | nbytes | 數組總內存占用量:size * itemsize。 | arr.nbytes | 32(4元素?× 8字節) | 處理大數據時監控內存消耗。 | flags | 內存存儲方式:是否連續存儲(高級優化)。 | arr.flags | C_CONTIGUOUS : True?等 | 高性能計算或底層內存操作。 |
|
|
練習題
題目?1:觀察數組形狀
Python import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) |
- arr.shape?的輸出是什么???
- arr.ndim?的值是多少???
- arr.size?的結果是什么?
答案??
- (2, 3)??
- 2(二維數組)??
- 6(總元素數:2行×3列=6)
題目?2:數據類型推斷
以下數組的?dtype?分別是什么?
- np.array([1, 2, 3])??
- np.array([1.0, 2, 3])??
- np.array(["apple", "banana"])??
答案??
- int64(默認整數類型)??
- float64(包含浮點數,自動提升為浮點類型)??
- <U6(Unicode 字符串,長度?6)
題目?3:內存占用計算
Python arr = np.array([[0, 1], [2, 3]], dtype=np.int32) |
- arr.itemsize?的值是多少???
- arr.nbytes?的結果是多少???
答案??
- 4(int32?類型占?4 字節)??
- 8(總字節數:4元素×4字節=16 → 注:原題應為?4 元素?需要檢查數組大小)
(更正:數組是?2x2,共?4 元素。nbytes = 4 × 4 = 16,原題可能有誤)
題目?4:轉置操作
Python arr = np.array([[1, 2], [3, 4], [5, 6]]) |
- 寫出?arr.T?的輸出。??
- 轉置后的?shape?是什么?
答案??
Plain Text [[1 3 5] [2 4 6]] |
(2, 3)(原數組是?3x2,轉置后為?2x3)。