numpy切片索引後維度的變化
阿新 • • 發佈:2020-12-09
對一個numpy陣列或矩陣做切片索引,例如對一列或一行資料進行提取。如果索引值是標量,索引後的量維度減小1。如果索引是一個範圍如a:b,則索引後維度不變。
a = np.random.rand(4, 5) a Out[13]: array([[0.83451584, 0.27220378, 0.84461958, 0.11096957, 0.02921137], [0.96256874, 0.7320878 , 0.40411651, 0.28934631, 0.22163871], [0.15108374, 0.39559392, 0.11857293, 0.26880925, 0.60808768], [0.83220628, 0.39516063, 0.67430698, 0.41871186, 0.06415003]]) b = a[:, 1].shape b Out[15]: (4,) c = a[:, 1:2].shape c Out[17]: (4, 1) d = a[:, [1]].shape d Out[19]: (4, 1)
看到a是一個二維矩陣,形狀是(4, 5)。
b對a的第二列進行索引,索引值是1,是一個標量。所以索引後b的維度降1,形狀為(4,)。
c也是對a的第二列進行索引,索引值是1:2,是一個範圍,python中上界是取不到的,所以還是索引第二列。但是,此時c的維度是保持原大小仍是2維資料,形狀為(4,1)。
d也是對a的第二列進行索引,索引值是[1],是一個範圍list(雖然list中僅有一個元素)。但是,此時d的維度是保持原大小仍是2維資料,形狀為(4,1)。
因此,在對numpy陣列使用索引時應當注意不同情況對應的維度變化,避免後續計算維度的不匹配。