numpy學習筆記二:numpy基礎
阿新 • • 發佈:2018-12-25
numpy與python的list在使用上是存在一定相似之處的,但是實際上在numpy中資料以元組的形式存放,這就使得在進行矩陣運算時會具有極高的效率,方便進行各種機器學習演算法的實現。那麼首先看一下在numpy中如何建立一個元組。
a = np.arange(5)
print(a)
print(a.shape)
類似的可以建立二維陣列:
m = np.array([np.arange(10),np.arange(10)])
print(m)
print(m.shape)
可以使用與list類似的方法選取元組中的元素:
n1 = m[1,2] print(n1) n2 = m[1] print(n2)
在numpy中可以自行定義元組中的資料型別,有以下資料型別可以選擇:
bool | 用一位儲存的布林型別(值為TRUE或FALSE) |
inti | 由所在平臺決定其精度的整數(一般為int32或int64) |
int8 | 整數,範圍為-128至127 |
int16 | 整數,範圍為-32 768至32 767 |
int32 | 整數,範圍為-231至231 -1 |
int64 | 整數,範圍為-263至263 1 |
uint8 | 無符號整數,範圍為0至255 |
uint16 | 無符號整數,範圍為0至65535 |
uint32 | 無符號整數,範圍為0至2^32-1 |
uint64 | 無符號整數,範圍為0至2^64-1 |
float16 | 半精度浮點數(16位):其中用1位表示正負號,5位表示指數,10位表示尾數 |
float32 | 單精度浮點數(32位):其中用1位表示正負號,8位表示指數,23位表示尾數 |
float64或float | 雙精度浮點數(64位):其中用1位表示正負號,11位表示指數,52位表示尾數 |
complex64 | 複數,分別用兩個32位浮點數表示實部和虛部 |
complex128或complex | 複數,分別用兩個64位浮點數表示實部和虛部 |
可以在建立元組的時候就規定元組元素的型別:
b = np.arange(7, dtype=np.uint16)
a = np.arange(9)
print(a[3:7])
print(a[::-1])
同理,在多維元組中也可以使用類似的方法:
b = np.arange(24).reshape(2,3,4) print(b.shape) print(b) print(b[:,0,0]) print(b[0]) print(b[0,:,:]) print(b[0,1]) print(b[0,1,::2])
在建立了陣列之後(numpy中的陣列,即之前提到的元組),可以通過numpy進行組合:
import sys
from datetime import datetime
import numpy as np
a = np.arange(9).reshape(3,3)
print(a)
b = a*2
print(b)
print('==========ab水平組合==========')
print(np.hstack((a,b)))
print('==========ab垂直組合==========')
print(np.vstack((a,b)))
print('==========使用concatenate把axis設為0==========')
c = np.concatenate((a,b),axis=0)
print(c)
print('==========使用concatenate把axis設為1==========')
c = np.concatenate((a,b),axis=1)
print(c)
print('==========深度組合==========')
c = np.dstack((a,b))
print(c)
print('==========列組合==========')
a = np.arange(4)
b = a**2
c = np.column_stack((a,b))
print(c)
可以根據程式碼中的註釋瞭解各種組合的方法,除此之外還有行組合,row_stack與列組合是類似的。
除了組合,還可以對陣列進行分割:
a = np.arange(9).reshape(3,3)
print(a)
print('=======水平分割======')
print(np.hsplit(a,3))
print('=======垂直分割======')
print(np.vsplit(a,3))
在實際使用中,還可以使用陣列的一些屬性進行操作:
ndim陣列的維數
size 給出陣列元素的總個數
itemsize 陣列元素所佔的位元組數
nbytes整個陣列所佔的位元組數
T轉置