Python - numpy 模塊
阿新 • • 發佈:2019-05-10
hit 基本操作 使用 thead 數組比較 內存空間 運行 類型 bool
numpy
概述
? Numerical Python. 補充了python所欠缺的數值計算能力
? Numpy是其他數據分析及機器學習庫的底層庫
? Numpy完全標準C語言實現,運行效率充分優化
? Numpy開源免費
基本數據結構
類型名 | 類型表示符 |
---|---|
布爾類型 | bool_ |
有符號整型 | int8/16/32/64 |
無符號整型 | uint8/16/32/64 |
浮點型 | float16/32/64 |
復數型 | complex64/128 |
字符串型 | str_,每個字符32位Unicode |
數組 - nadarray 對象
概念
類似於列表, 可以多維嵌套, 但是要求必須內部存儲相同類型的數據
即同質數組, 相同的數據類型的空間占用相同, 且查詢方便
空間結構
ary = np.array([1, 2, 3, 4, 5]) """ _______________________________________ a -----> | nadarray 對象 | | | | 元數據 | |_______ | |_dim___| | |_dtype_| _____________________ | |_data__| ---> |_1_|_2_|_3_|_4_|_5_| | |_shape_| ---> (5,) | |_______|______________________________|"""
元數據 (metadata)
存儲對數組的描述信息, 如 : dim count, dtype, dara, shape 等
實際數據
完整的數組數據, 將實際數據與元數據分開存放
一方面提高了內存空間的使用效率
另一方面減少對實際數據的訪問頻率,提高性能。
創建語法
np.array([[], [], []]) # 直接創建 np.arange(0, 10, 1) # 序列創建 np.zeros(10) # 全 0 創建 np.ones(10) # 全 1 創建 np.zeros_like(ary) # 仿結構創建 全 0 數組 np.ones_like(ary)# 仿結構創建 全 1 數組
示例
import numpy as np a = np.array([1, 2, 3, 4, 5, 6]) print(a) # [1 2 3 4 5 6] b = np.arange(7, 13, 1) print(b) # [ 7 8 9 10 11 12] c = np.zeros(6) print(c) # [ 0. 0. 0. 0. 0. 0.] d = np.ones(6) print(d) # [ 1. 1. 1. 1. 1. 1.] print(d / 2) # [ 0.5 0.5 0.5 0.5 0.5 0.5] e = np.array([[1, 2, 3], [4, 5, 6]]) print(np.ones_like(e)) """ [[1 1 1] [1 1 1]] """
nadarray 對象屬性基本操作
數組維度
ary.shape 數組維度
可以直接進行更改數組結構
但是更改需要合理, 比如 6 元素 更改為 3*3 需要9元素則無法滿足從而報錯
ary = np.array([1, 2, 3, 4, 5, 6]) print(ary, ary.shape) # [1 2 3 4 5 6] (6,)
ary.shape = (2, 3) print(ary, ary.shape) """ [[1 2 3] [4 5 6]] (2, 3) """ print(ary[1][1]) # 5
元素類型
ary.dtype 數組元素類型
ary.astype 修改元素類型
數據類型直接更改是不可取的, 需要使用 astype 方法進行更改
利用重新開辟新的空間來賦值存儲
即此方法不會改變原值, 需要用返回值進行復制
# 數組元素類型 ary = np.array([1, 2, 3, 4, 5, 6]) print(ary, ary.dtype) # [1 2 3 4 5 6] int32
# ary.dtype = np.int64 # print(ary, ary.dtype)
# 更改數據類型 b = ary.astype(‘float32‘) print(ary, ary.dtype) # [1 2 3 4 5 6] int32 print(b, b.dtype) # [ 8.58993459e+09 1.71798692e+10 2.57698038e+10] float32
數組元素個數
ary.size 返回數組元素個數
len(ary) 返回數組元素個數
ary = np.array([1, 2, 3, 4, 5, 6]) print(ary.size) # 6 print(len(ary)) # 6
數組元素索引
下標
# 數組元素的索引 ary = np.arange(1, 9) ary.shape = (2, 2, 2) print(ary, ary.shape) """ [[[1 2] [3 4]] [[5 6] [7 8]]] (2, 2, 2) """ print(ary[0]) # 0頁數據 """ [[1 2] [3 4]] """ print(ary[0][0]) # 0頁0行數據 """ [1 2] """ print(ary[0][0][0]) # 0頁0行0列數據 """ 1 """ print(ary[0, 0, 0]) # 0頁0行0列數據 """ 1 """ # 使用for循環,把ary數組中的元素都遍歷出來。 for i in range(ary.shape[0]): for j in range(ary.shape[1]): for k in range(ary.shape[2]): print(ary[i, j, k], end=‘ ‘) # 1 2 3 4 5 6 7 8
數組運算
遍歷所有的元素進行運算
# ary = np.array([1, 2, 3, 4, 5]) print(ary + 2) # [3 4 5 6 7] print(ary + ary) # [ 2 4 6 8 10] print(ary * ary) # [ 1 4 9 16 25]
數組比較
遍歷所有元素進行比較
# ary = np.array([1, 2, 3, 4, 5]) print(ary > 3) # [False False False True True]
Python - numpy 模塊