在讀時,會用到這麼的一段**:
image_vector_len = np.prod(image_size)#總元素大小,3*55*47
img = image.open(path)
arr_img = np.asarray(img, dtype='float64')
arr_img = arr_img.transpose(2,0,1).reshape((image_vector_len, ))# 47行,55列,每個點有3個元素rgb。再把這些元素一字排開
transpose是什麼意識呢? 看如下例子:
arr1 = array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
這是原來的矩陣。如果對其進行轉置,執行arr2 = arr1.transpose((1,0,2))
得到:array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
過程是怎樣的?
arr1.shape 應該是(2, 2, 4) 意為 2維,2*4矩陣
arr1.transpose(*args) 裡面的引數,可以這麼理解,他是調換arr1.shape的順序,咱來給arr1.shape標一下角標哈,(2[0], 2[1], 4[2]) [ ] 裡是shape的索引,對吧,
transpose((1, 0, 2)) 的意思是 按照這個順序 重新設定shape 也就是 (2[1], 2[0], 4[2])
雖然看起來 變換前後的shape都是 2,2,4 , 但是問題來了,transpose是轉置
shape按照(1,0,2)的順序重新設定了, array裡的所有元素 也要按照這個規則重新組成新矩陣
比如 8 在arr1中的索引是 (1, 0, 0) 那麼按照剛才的變換規則,就是 (0, 1, 0) 看看跟你結果arr2的位置一樣了吧,依此類推..
另外乙個知識點:
對於一維的shape,轉置是不起作用的,舉例:
x=linspace(0,
4,5)
#array([0.,1.,2.,3.,4.])
y=transpose(x) # 會轉置失敗。
如果想正確使用的話:
x.shape=(5,
1)y=transpose(x) #就可以了
Python 矩陣轉置
在讀時,會用到這麼的一段 image vector len np.prod image size 總元素大小,3 55 47 img image.open path arr img np.asarray img,dtype float64 arr img arr img.transpose 2,0,...
Python求轉置矩陣
02.題目二 轉置2 3矩陣 03.解析 寫在最後的話 這裡是一段防爬蟲文字,請讀者忽略。本文原創首發於csdn,作者idys 部落格首頁 矩陣存放於列表當中 根據3 3矩陣中列表的長度,開闢出同樣長度列表,列表中存放的同樣是列表 將原來列表的元素依次存放於每個列表中 import copy def...
稀疏矩陣的轉置(矩陣轉置和快速轉置)
實現矩陣的轉置 1.將矩陣的行列值相互轉換。2.將每個三元組中的i和j交換。3.重排三元組之間的次序便可實現矩陣的轉置。void transposesmatrix tsmatrix m,tsmatrix t return transposesmatrix快速轉置的原理是 如果能預先確定矩陣m中每一列...