1.numpy簡介
Numpy:提供了一個在Python中做科學(xué)計算的基礎(chǔ)庫,重在數(shù)值計算,主要用于多維數(shù)組(矩陣)處理的庫。
用來存儲和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多。
本身是由C語言開發(fā),是個很基礎(chǔ)的擴展,Python其余的科學(xué)計算擴展大部分都是以此為基礎(chǔ)。
高性能科學(xué)計算和數(shù)據(jù)分析的基礎(chǔ)包
ndarray,多維數(shù)組(矩陣),具有矢量運算能力,快速、節(jié)省空間
2.ndarray數(shù)組創(chuàng)建
NumPy數(shù)組是一個多維的數(shù)組對象(矩陣),稱為ndarray,具有矢量算術(shù)運算能力,并具有執(zhí)行速度快和節(jié)省空間的特點。
注意:ndarray的下標(biāo)從0開始,且數(shù)組里的所有元素必須是相同類型
2.1ndarray屬性
ndim屬性:維度個數(shù)
shape屬性:維度大小
dtype屬性:數(shù)據(jù)類型
2.2ndarray的隨機創(chuàng)建
通過隨機抽樣 (numpy.random) 生成隨機數(shù)據(jù)。
np.random.rand()
隨機樣本位于[0, 1)中,rand固定區(qū)間0.0 ~ 1.0
arr1 = np.random.rand(3,4) # 3*4,0-1
print(arr1)
a = 3
print(arr1.ndim) # 維數(shù)
print(arr1.shape) # 維度大小
print(arr1.dtype) # 數(shù)據(jù)類型
######################運行結(jié)果#########################
[[ 0.8304427 0.28691753 0.49540239 0.81833986]
[ 0.67167216 0.07743172 0.02851783 0.1204921 ]
[ 0.21615523 0.88841313 0.06086932 0.0161961 ]]
2
(3, 4)
float64
#####################################################
np.random.randn()
隨機樣本是從標(biāo)準(zhǔn)正態(tài)分布中返回一個或多個樣本值。
arr2 = np.random.randn(3,4,5)
print(arr2)
print(arr2.ndim)
print(arr2.shape)
###########################運行結(jié)果##############################
[[[-0.53048525 -0.98315123 1.07899734 1.00916922 -1.43343381]
[ 0.16614765 -2.04573639 0.69389559 -1.03237277 0.55933928]
[-1.83031415 -1.06860538 0.54219642 -1.07381001 0.04935296]
[ 0.23682127 -0.31775132 -0.00994159 -0.20292605 1.30770046]]
[[ 0.10626402 1.01778731 -1.53680091 0.76804688 0.27078436]
[-0.43091204 1.47209429 0.80118083 -2.0614604 -0.5506007 ]
[ 1.44773308 -2.14104747 -0.95519316 -0.83441982 -0.31901006]
[ 0.10257071 -0.42335524 -0.01249585 -1.47530282 -1.1789874 ]]
[[ 0.27786974 -0.93659983 0.44406388 0.01835018 1.11760644]
[ 1.68107332 -1.88498173 0.69610999 1.4677356 2.95709668]
[-2.16621502 1.09556328 -0.5359436 2.01755611 -1.00161595]
[ 0.41419144 -0.74623465 0.13370128 -0.01935085 -1.03277491]]]
3
(3, 4, 5)
#################################################################
np.random.randint()方法使用
生成指定維度大?。?行4列)的隨機多維整型數(shù)據(jù)(二維),randint指定區(qū)間-2 ~ 5
arr3 = np.random.randint(-2,6,(3,4))
print(arr3)
print(arr3.dtype)
#######################運行結(jié)果##########################
[[ 0 1 5 3]
[ 4 0 1 4]
[ 0 -2 5 1]]
int32
#########################################################
np.random. uniform()方法使用
生成指定維度大?。?行5列)的隨機多維浮點型數(shù)據(jù)(二維),uniform()可以指定區(qū)間(-3, 2)
# 隨機創(chuàng)建浮點類型的ndarray
arr4 = np.random.uniform(-3,3,size=(4,5))
print(arr4)
print(arr4.dtype)
##########################運行結(jié)果#############################
[[ 0.39471789 1.80044462 -1.2432487 2.72737276 0.63235806]
[-1.15296166 -2.43829749 -1.6658063 -0.144205 0.04610753]
[ 0.32108255 -2.77588426 -1.50920274 0.24233935 2.67571127]
[ 1.06973439 -0.4995566 2.79207931 -1.14324029 -2.48195469]]
float64
###############################################################
2.3 ndarray的序列創(chuàng)建
np.zeros()
指定大小的全0數(shù)組。注意:第一個參數(shù)是元組,用來指定大小,如(3, 4)。
print(np.zeros((3,4)))
print(np.zeros((3,4)).dtype)
print(type(np.zeros((3,4))))
##########################運行結(jié)果#############################
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
float64
<class 'numpy.ndarray'>
###############################################################
np.ones()
指定大小的全1數(shù)組。注意:第一個參數(shù)是元組,用來指定大小,如(3, 5)。
print(np.ones((3,5)))
##########################運行結(jié)果#############################
[[ 1. 1. 1. 1. 1.]
[ 1. 1. 1. 1. 1.]
[ 1. 1. 1. 1. 1.]]
###############################################################
np.empty()
初始化數(shù)組,不是總是返回全0,有時返回的是未初始的隨機值(內(nèi)存里的隨機值)。
print(np.empty((4,5)))
##########################運行結(jié)果#############################
[[ 0.39471789 1.80044462 1.2432487 2.72737276 0.63235806]
[ 1.15296166 2.43829749 1.6658063 0.144205 0.04610753]
[ 0.32108255 2.77588426 1.50920274 0.24233935 2.67571127]
[ 1.06973439 0.4995566 2.79207931 1.14324029 2.48195469]]
###############################################################
ndarray的序列創(chuàng)建
arr8 = np.arange(15) # 創(chuàng)建一個一維數(shù)組
print(arr8)
##########################運行結(jié)果#############################
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
###############################################################
arr9 = arr8.reshape(3,5) # 創(chuàng)建3行5列數(shù)組
print(arr9)
##########################運行結(jié)果#############################
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
###############################################################
2.4 dtype參數(shù)
arr12 = np.zeros((3,5),dtype=np.int64)
print(arr12)
print(arr12.dtype)
##########################運行結(jié)果#############################
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
int64
###############################################################
2.5 數(shù)組數(shù)據(jù)類型的轉(zhuǎn)換astype()
arr13 = arr12.astype(np.float32)
print(arr13)
print(arr13.dtype)
##########################運行結(jié)果#############################
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]
float32
###############################################################