Numpy簡介
NumPy(Numerical Python) 是 Python 語言的一個擴充程式庫,支援大量的次元數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。
NumPy 是一個運作速度非常快的數學庫,主要用于數組計算,包含:
- 一個強大的N維數組對象 ndarray
- 廣播功能函數
- 整合 C/C++/Fortran 代碼的工具
- 線性代數、傅裡葉變換、随機數生成等功能
NumPy Ndarray 對象
- NumPy 最重要的一個特點是其 N 維數組對象 ndarray,它是一系列同類型資料的集合,以 0 下标為開始進行集合中元素的索引
- ndarray 對象是用于存放同類型元素的多元數組
- ndarray 中的每個元素在記憶體中都有相同存儲大小的區域
numpy對象建立:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
名稱 | 描述 |
object | 數組或嵌套的數列 |
dtype | 數組元素的資料類型,可選 |
copy | 對象是否需要複制,可選 |
order | 建立數組的樣式,C為行方向,F為列方向,A為任意方向(預設) |
subok | 預設傳回一個與基類類型一緻的數組 |
ndmin | 指定生成數組的最小次元 |
資料類型轉換
拷貝
最小次元
subok
NumPy 資料類型
名稱 | 描述 |
bool_ | 布爾型資料類型(True 或者 False) |
int_ | 預設的整數類型(類似于 C 語言中的 long,int32 或 int64) |
intc | 與 C 的 int 類型一樣,一般是 int32 或 int 64 |
intp | 用于索引的整數類型(類似于 C 的 ssize_t,一般情況下仍然是 int32 或 int64) |
int8 | 位元組(-128 to 127) |
int16 | 整數(-32768 to 32767) |
int32 | 整數(-2147483648 to 2147483647) |
int64 | 整數(-9223372036854775808 to 9223372036854775807) |
uint8 | 無符号整數(0 to 255) |
uint16 | 無符号整數(0 to 65535) |
uint32 | 無符号整數(0 to 4294967295) |
uint64 | 無符号整數(0 to 18446744073709551615) |
float_ | float64 類型的簡寫 |
float16 | 半精度浮點數,包括:1 個符号位,5 個指數位,10 個尾數位 |
float32 | 單精度浮點數,包括:1 個符号位,8 個指數位,23 個尾數位 |
float64 | 雙精度浮點數,包括:1 個符号位,11 個指數位,52 個尾數位 |
complex_ | complex128 類型的簡寫,即 128 位複數 |
complex64 | 複數,表示雙 32 位浮點數(實數部分和虛數部分) |
complex128 | 複數,表示雙 64 位浮點數(實數部分和虛數部分) |
資料類型對象 (dtype)
資料類型對象(numpy.dtype 類的執行個體)用來描述與數組對應的記憶體區域是如何使用,它描述了資料的以下幾個方面:
- 資料的類型(整數,浮點數或者 Python 對象)
- 資料的大小(例如, 整數使用多少個位元組存儲)
- 資料的位元組順序(小端法或大端法)
- 在結構化類型的情況下,字段的名稱、每個字段的資料類型和每個字段所取的記憶體塊的部分
- 如果資料類型是子數組,那麼它的形狀和資料類型是什麼。
位元組順序是通過對資料類型預先設定 < 或 > 來決定的。 < 意味着小端法(最小值存儲在最小的位址,即低位組放在最前面)。> 意味着大端法(最重要的位元組存儲在最小的位址,即高位組放在最前面)。
dtype 對象是使用以下文法構造的:
numpy.dtype(object, align, copy)
object - 要轉換為的資料類型對象
align - 如果為 true,填充字段使其類似 C 的結構體。
copy - 複制 dtype 對象 ,如果為 false,則是對内置資料類型對象的引用
每個内建類型都有一個唯一定義它的字元代碼
字元 | 對應類型 |
b | 布爾型 |
i | (有符号) 整型 |
u | 無符号整型 integer |
f | 浮點型 |
c | 複數浮點型 |
m | timedelta(時間間隔) |
M | datetime(日期時間) |
O | (Python) 對象 |
S, a | (byte-)字元串 |
U | Unicode |
V | 原始資料 (void) |
dt = np.dtype(np.int32)
print(dt)
輸出:
int32
dt = np.dtype('i4')
print(dt)
輸出:
int32
dt = np.dtype([('age', np.int8)])
print(dt)
輸出:
[('age', 'i1')]
結構化資料類型
student = np.dtype([('name','S20'), ('age','i1'), ('score', 'f4')])
a = np.array([('xm', 10, 98.123456789), ('xh', 8, 99.111111111), ('xl', '9', 100)], dtype=student)
print(a)
輸出:
[(b'xm', 10, 98.12346 ) (b'xh', 8, 99.111115) (b'xl', 9, 100. )]
視訊講解
視訊加載中...