numpy是python的乙個科學計算庫,提供了矩陣計算的功能。pandas對numpy庫進行了二次封裝,提供了更強大的功能。
numpy可用來儲存和處理大型矩陣,比python自身的資料結構(字串,佇列,元組,字典)更高階。numpy的主要物件是乙個多維度的,均勻的多維陣列,可以進行矩陣運算。
1.建立矩陣
2.ndarray物件屬性
3.矩陣的擷取
(1) 直接賦值建立矩陣
import numpy as np
#建立一維陣列
arr1=np.
array([
1,2,
3,4,
5])print
(arr1)
print
(arr1.shape) #結果為(5
,)#建立二維陣列
arr2=np.
array([
[1,2
,3,4
,5],
[6,7
,8,9
,10]]
)print
(arr2.shape) #結果為(2
,5),是乙個2行5列的二維陣列
修改一維矩陣和二維矩陣
#修改一維陣列第1個元素的值
arr1[1]
=100 #結果為[
110034
5]#修改二維陣列第1行第2列元素的值
arr2[1,
2]=1000
#修改二維陣列第0行
arr2[0]
=(1,
1,1,
1,1)
arr2[0]
=1
矩陣求和
#全部求和
arr.
sum(
)#按列對二維陣列求和
arr.
sum(axis=0)
#按行對二維陣列求和
arr.
sum(axis=
1)
axis是軸的意思。軸是用來為超過一維的陣列定義的屬性,二維陣列擁有兩個軸。
axis=0為行,axis=1為列。
(2) 通過函式建立矩陣
1.numpy的range()函式
np.
arange
([start,
]stop[
,step,
],dtype=none)
example:
import numpy as np
#建立一維陣列
arr=np.
arange(1
,11,3
)# output:[1
4710]
#建立二維矩陣
arr=np.
arange(1
,13).
reshape(3
,4)print
(arr)
#output:[[
1234
][56
78][
9101112
]]
2.numpy的隨機函式
np.random.
rand(6
) #取6個位於[0,
1]中的隨機樣本
np.random.
randint(1
,100,5
) #從1到100中取5個整數
np.random.
randn(3
,4) #從標準正態分佈中返回多個樣本值生成3行4列的陣列
再次執行指令碼,返回結果不同,若想保持不變,則需設定隨機數種子,如
np.random.
seed(1
)print
(np.random.
randn(3
,4))
多次執行,結果保持不變。
3.numpy的linspace()函式
np.linspace() 函式用於建立乙個一維陣列,陣列是乙個等差數列構成的,格式如下:
np.
linspace
(start, stop, num=
50, endpoint=true, retstep=false, dtype=none)
4.numpy的logspace()函式
np.logspace()函式用於生成等比數列
np.
logspace
(start, stop, num=
50, endpoint=true, base=
10.0
, dtype=none)
#序列的起始值為base**start,終止值為base**stop
ndarray.ndim : 陣列的維數,也稱為秩rank。
ndarray.shape : 陣列各維的大小,是tuple元組型別。對乙個n行,m列的矩陣來說,shape為(n,m)
ndarray.size : 陣列中元素的總數。
ndarray.dtype : 陣列每個元素的型別
1.按行列擷取矩陣
import numpy as np
arr2=np.
array([
[1,2
,3,4
,5],
[6,7
,8,9
,10]]
)#獲取矩陣第0
-1行資料
print
(arr2[0:
1])#獲取矩陣第0行資料
print
(arr2[0]
)print
(arr2[0,
:])#獲取第1行,第2
-4列資料
print
(arr2[1,
2:5]
)#獲取矩陣前兩列的資料
print
(arr2[:,
0:2]
)
numpy擷取陣列部分和python的list擷取部分不同,它不建立新陣列,只是指向原陣列的部分,所以當修改擷取部分的某個值,原陣列也會被修改,它們都指向同乙個陣列。
arr2[0,
1:4]
s[0]=
100print
(arr2)
#output:[[
110034
5][6
78910
]]
2.按條件擷取矩陣
import numpy as np
arr=np.
array([
[1,2
,3,4
,5],
[6,7
,8,9
,10]]
)print
(arr[arr>6]
)print
(arr>6)
#output:[7
8910]
[[false false false false false]
[false true true true true]
]
按條件擷取陣列,使用最多的是將陣列中滿足條件的元素變成指定值,例:
arr[arr>6]
=0print
(arr)
#output:[[
1234
5][6
0000
]]
擴充套件資料 NumPy快速入門學習筆記
可以說是剛剛入門了python,最近需要做深度學習的任務,但是發現numpy的知識一無所知,所以應該靜下來學一學。寫這些東西,最重要的就是想要自己去用它,在這裡也跟自己提個醒,避免頻繁的陷入一些不必要的學習之中。要明白自己學習的目的,是為了用而學習,而不是為了學習而去學習 就目前階段,許多事物擺在眼...
面向矩陣的numpy入門筆記
我先宣告我學numpy的目的 在python中使用矩陣 我需要在機器學習中使用矩陣 所以我的目的很明確,矩陣 矩陣在numpy中叫ndarray the n dimensional array 我就是很喜歡問這個ndarray為啥叫ndarray,可是大多教程 特別是中文教程 都不說,這就不利於我們...
Numpy學習筆記(一)
numpy的主要物件是同種元素的多維陣列,這和python的列表稍微不同,python列表的元素型別可以不同。在numpy中,維度 dimensions 叫做軸 axes 軸的個數叫做秩 rank 比如 1,2,3 是乙個秩為1 的陣列,軸長度為3 1.0.0.0.1.2.陣列的秩為2,第一維的維度...