您好,登錄后才能下訂單哦!
ndarry的矩陣運(yùn)算
數(shù)組是編程中的概念,矩陣、矢量是數(shù)學(xué)概念
在計(jì)算機(jī)編程中,矩陣可以用數(shù)組形式定義,矢量可以用結(jié)構(gòu)定義
示例代碼(1):
# 矢量與矢量運(yùn)算
arr = np.array([[1, 2, 3],
[4, 5, 6]])
print("元素相乘:")
print(arr * arr)
print("矩陣相加:")
print(arr + arr)
運(yùn)行結(jié)果:
元素相乘:
[[ 1 4 9]
[16 25 36]]
矩陣相加:
[[ 2 4 6]
[ 8 10 12]]
# 矢量與標(biāo)量運(yùn)算
print(1. / arr)
print(2. * arr)
運(yùn)算結(jié)果:
[[ 1. 0.5 0.33333333]
[ 0.25 0.2 0.16666667]]
[[ 2. 4. 6.]
[ 8. 10. 12.]]
ndarray的索引與切片
與Python的列表索引功能相似
示例代碼(1):
# 一維數(shù)組
arr1 = np.arange(10)
print(arr1)
print(arr1[2:5])
運(yùn)行結(jié)果:
[0 1 2 3 4 5 6 7 8 9]
[2 3 4]
arr[r1:r2, c1:c2]
arr[1,1]等價(jià)arr[1][1]
[:]代表某個(gè)維度的數(shù)據(jù)
示例代碼(2):
# 多維數(shù)組
arr2 = np.arange(12).reshape(3, 4)
print(arr2)
print(arr2[1])
print(arr2[0:2, 2:])
print(arr2[:, 1:3])
運(yùn)行結(jié)果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[4 5 6 7]
[[2 3]
[6 7]]
[[ 1 2]
[ 5 6]
[ 9 10]]
布爾值多維數(shù)組:arr[condition], condition也可以是多個(gè)條件組合。
注意,多個(gè)條件組合要使用& |連接,而不是Python的 and or。
示例代碼(3):
# 條件索引
# 找出 data_arr 中 2005年后的數(shù)據(jù)
data_arr = np.random.rand(3, 3)
print(data_arr)
year_arr = np.array([[2000, 2001, 2000],
[2005, 2002, 2009],
[2001, 2003, 2010]])
is_year_after_2005 = year_arr >= 2005
print(is_year_after_2005, is_year_after_2005.dtype)
filtered_arr = data_arr[is_year_after_2005]
print(filtered_arr)
#filtered_arr = data_arr[year_arr >= 2005]
#print(filtered_arr)
# 多個(gè)條件
filtered_arr = data_arr[(year_arr <= 2005) & (year_arr % 2 == 0)]
print(filtered_arr)
運(yùn)行結(jié)果:
[[ 0.53514038 0.93893429 0.1087513 ]
[ 0.32076215 0.39820313 0.89765765]
[ 0.6572177 0.71284822 0.15108756]]
[[False False False]
[ True False True]
[False False True]] bool
[ 0.32076215 0.89765765 0.15108756]
#[ 0.32076215 0.89765765 0.15108756]
[ 0.53514038 0.1087513 0.39820313]
二維數(shù)組直接使用轉(zhuǎn)換函數(shù):transpose()
高維數(shù)組轉(zhuǎn)換要指定維度編號參數(shù)(0,1,2,……),注意參數(shù)是元組
示例代碼:
arr = np.random.rand(2, 3) # 2*3 數(shù)組
print(arr)
print(arr.transpose()) # 轉(zhuǎn)換為 3*2 數(shù)組
arr3d = np.random.rand(2, 3, 4) # 2*3*4數(shù)組,2對應(yīng)0, 3對應(yīng)1,4對應(yīng)2
print(arr3d)
print(arr3d.transpose((1, 0, 2))) # 根據(jù)維度編號,轉(zhuǎn)換為3*2*4數(shù)組
運(yùn)行結(jié)果:
# 高維數(shù)組轉(zhuǎn)換
# 轉(zhuǎn)換前:
[[[ 0.91281153 0.61213743 0.16214062 0.73380458]
[ 0.45539155 0.04232412 0.82857746 0.35097793]
[ 0.70418988 0.78075814 0.70963972 0.63774692]]
[[ 0.17772347 0.64875514 0.48422954 0.86919646]
[ 0.92771033 0.51518773 0.82679073 0.18469917]
[ 0.37260457 0.49041953 0.96221477 0.16300198]]]
# 轉(zhuǎn)換后:
[[[ 0.91281153 0.61213743 0.16214062 0.73380458]
[ 0.17772347 0.64875514 0.48422954 0.86919646]]
[[ 0.45539155 0.04232412 0.82857746 0.35097793]
[ 0.92771033 0.51518773 0.82679073 0.18469917]]
[[ 0.70418988 0.78075814 0.70963972 0.63774692]
[ 0.37260457 0.49041953 0.96221477 0.16300198]]]
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。