一挨摸、numpy簡介
- Numpy全名叫Numeric Python,是一個開源的Python科學(xué)計算庫,它包括:
- 一個強大的N維數(shù)組對象ndrray;
- 比較成熟的函數(shù)庫喝峦;
- 用于整合C/C++和Fortran代碼的工具包牲芋;
- 實用的線性代數(shù)、傅里葉變換和隨機數(shù)生成函數(shù)
- numpy的優(yōu)勢
- 對于同樣的數(shù)值計算任務(wù)苗傅,由于NumPy能夠直接對數(shù)組和矩陣進行操作抒线, 可以省略很多循環(huán)語句使用NumPy要比直接編寫Python代碼便捷得多
- NumPy中數(shù)組的存儲效率和輸入輸出性能均遠遠優(yōu)于Python中等價的基 本數(shù)據(jù)結(jié)構(gòu)
- NumPy的大部分代碼都是用C語言寫成的,這使得NumPy比純Python代 碼高效得多
驗證效率:創(chuàng)建2個矩陣渣慕,讓2個矩陣相加嘶炭,分別使用numpy和list實現(xiàn)對比它們的執(zhí)行時間
可以看到numpy在這里創(chuàng)建數(shù)組的效率是list的近90倍
二、ndarray數(shù)組對象
ndarray是numpy中的多維數(shù)組,它是一個快速而靈活的容器
- 創(chuàng)建ndarray
···Python
a = np.array([1, 2, 3])
print(a)
print(a.shape)#返回數(shù)組所有維度的長度
print(a.dtype)#獲取數(shù)組的item類型
2. 創(chuàng)建多維數(shù)組
```Python
a = np.array([np.arange(2), np.arange(2)])#創(chuàng)建一個2*2的數(shù)組
b = np.zeros((2, 2))#所有元素的值為0
c = np.ones((1, 2))#所有元素的值為1
d = np.full((2, 2), 7)#所有元素的值為7
e = np.eye(2)#對角陣
f = np.eye(6, k=2)#k為正數(shù)則將對角陣向右上角移動,為負數(shù)向坐下移動
g = np.random.random((5, 5))#隨機0-1 5*5ndarray
h = np.random.randint(100, size=(3, 3))#0-100的整數(shù),size參數(shù)是數(shù)組的維度
二逊桦、numpy類型簡介
- bool 用一位存儲的布爾類型
- inti 由所在平臺決定的整形精度
- int8 8位整數(shù)
- int16 16位整數(shù)
- int32 32位整數(shù)
- int64 64位整數(shù)
- uint8 無符號8位整數(shù)
- uint16 無符號16位整數(shù)
- uint32 無符號32位整數(shù)
- uint64 無符號64位整數(shù)
- float16 半精度浮點數(shù)
- float32 單精度浮點數(shù)
- float64或float 雙精度浮點數(shù)
- complex64 復(fù)數(shù),分別用2個32位浮點數(shù)表示實數(shù)和虛數(shù)
- complex128 復(fù)數(shù)
每一種數(shù)據(jù)類型都有對應(yīng)的類型轉(zhuǎn)換函數(shù)
np.bool(0)
自定義類型
#自定義數(shù)據(jù)類型
t = np.dtype([("name", np.str_, 40), ("num", np.int32), ("price", np.float32)])
t.names
products = np.array([("DVD", 10, 20), ("VCD", 12, 60)], dtype=t)
products
for i in range(products.size):
print(products[i])
print(products[i]["name"])
print(products[i]["num"])
print(products[i]["price"])
輸出: