1. 程式人生 > >numpy學習筆記二:numpy基礎

numpy學習筆記二:numpy基礎

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轉置