天天看點

一文詳解Python資料分析子產品Numpy基礎資料類型

作者:黑貓程式設計

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 指定生成數組的最小次元

資料類型轉換

一文詳解Python資料分析子產品Numpy基礎資料類型

拷貝

一文詳解Python資料分析子產品Numpy基礎資料類型

最小次元

一文詳解Python資料分析子產品Numpy基礎資料類型

subok

一文詳解Python資料分析子產品Numpy基礎資料類型

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.      )]           

視訊講解

視訊加載中...