numpy(01 入門)?
目錄
一、Python NumPy 數據類型
1.1 NumPy 基本類型
1.2 數據類型對象 (dtype)
1.3 具體實例
二、Numpy數據類型轉換?
2.1 浮點數據轉換
2.2 整型數據轉換
2.3 浮點數轉整數
?
一、Python NumPy 數據類型
1.1 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 位浮點數(實數部分和虛數部分) |
numpy 的數值類型實際上是 dtype 對象的實例,并對應唯一的字符,包括 np.bool_,np.int32,np.float32,等等。
每個內建類型都有一個唯一定義它的字符代碼如下:
1.2 數據類型對象 (dtype)
數據類型對象是用來描述與數組對應的內存區域如何使用,這依賴如下幾個方面:
- 數據的類型(整數,浮點數或者 Python 對象)
- 數據的大小(例如, 整數使用多少個字節存儲)
- 數據的字節順序(小端法或大端法)
- 在結構化類型的情況下,字段的名稱、每個字段的數據類型和每個字段對應的內存塊的區域
- 如果數據類型是子數組,它的形狀和數據類型
字節順序是通過對數據類型預先設定”<“或”>”來決定的。”<“意味著小端法(最高有效字節在最前面的方式稱為大端法)。”>”意味著大端法(最低有效字節在最前面的方式成為小端法)。?
小端與大端的區別:
字節順序 | 高位字節存儲位置 | 低位字節存儲位置 |
---|---|---|
大端(Big-endian) | 低地址存高位字節 | 高地址存低位字節 |
小端(Little-endian) | 低地址存低位字節 | 高地址存高位字節 |
?dtype 對象是使用以下語法構造的:
numpy.dtype(object, align, copy)
- object – 要轉換為的數據類型對象
- align – 如果為 true,填充字段使其類似 C 的結構體。
- copy – 復制 dtype 對象 ,如果為 false,則是對內置數據類型對象的引用
1.3 具體實例
實例 1:轉換為int32
import numpy as np
dt = np.dtype(np.int32)
print(dt)
運行結果:?
?
例 2:int8, int16, int32, int64 四種數據類型可以使用字符串 ‘i1’, ‘i2′,’i4′,’i8’ 代替
import numpy as np
dt = np.dtype('i4')
print(dt)
運行結果:
?
實例 3:字節順序標注
import numpy as np
dt = np.dtype('<i4')
print(dt)
運行結果:
?
例 4:結構化數據類型
# 首先創建結構化數據類型
import numpy as np
dt = np.dtype([('age',np.int8)])
print(dt)
運行結果:
?
例 5:將數據類型應用于 ndarray 對象
import numpy as np
a = np.array([(10,),(20,),(30,)])
print(a)
print('-'*50)
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a)
運行結果:
?
例 6:類型字段名可以用于存取實際的 age 列
import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a['age'])
運行結果:
?
例 7:下面的示例定義一個結構化數據類型 student,包含字符串字段 name,整數字段 age,及浮點字段 marks,并將這個 dtype 應用到 ndarray 對象。
import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
print(student)
運行結果:
?
例8:
import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student)
print(a)
運行結果:?
?
二、Numpy數據類型轉換?
2.1 浮點數據轉換
例1:生成一個浮點數組(浮點型默認是 float64
)
import numpy as np
a=np.random.random (4)
print(a)
print(a.dtype)
print(a.shape)
運行結果:
例2:改變dtype為?float32
,數組長度翻倍
import numpy as np
a=np.random.random (4)
a.dtype ="float32"
print(a)
print(a.dtype)
print(a.shape)#看下面有關shape的注釋
運行結果:
?
?shape
是 NumPy 中 ndarray
對象的一個屬性,用于表示數組的維度(dimensions)和每個維度的大小(size)。它以元組的形式返回,元組的每個元素表示數組在相應維度上的大小。
shape
的含義
- 對于 一維數組,
shape
返回數組的長度(即元素的數量)。 - 對于 二維數組,
shape
返回一個元組,其中第一個元素表示數組的行數,第二個元素表示列數。 - 對于 三維及更高維數組,
shape
返回一個多元素的元組,其中每個元素表示數組在對應維度上的大小。?
例3:改變dtype=?float
,默認類型就是float64
,數組長度也變回最初的4
import numpy as np
a=np.random.random (4)
a.dtype ="float"
print(a)
print(a.dtype)
print(a.shape)
運行結果:?
?
2.2 整型數據轉換
把a變為整數?int64
,生成長度為4的整型數組
例4:?
import numpy as np
a=np.random.random (4)
a.dtype="int64"
print(a)
print(a.dtype)
print(a.shape)
運行結果:
?
2.3 浮點數轉整數
例5:?
import numpy as np
b=np.array([1 ,2 ,3 ,4 ])
print(b.dtype)
運行結果:
?
例6:用 astype(int) 得到整數,并且不改變數組長度
import numpy as np
b=np.array([1 ,2 ,3 ,4 ],dtype=np.int32)
print(b)
print(b.shape)
print(b.dtype)
運行結果:
?
?
?
?
?
?
?
?
?
?
?