0
我在python和numpy中遇到了非常奇怪的數組問題。首先,什麼我試着去存檔:兩個等於numpy數組的產品是不同的
1)獲取從KxTxN矩陣 2的m×n矩陣)轉置這個矩陣,計算這個轉置矩陣和原來的
的產品我得到的是一些什麼奇怪的是,代碼如下:
首先,我已經閱讀了cv2的幫助圖片,並通過3矩陣(RGB點的字段)獲得了K,然後我正在切割一個小窗口窗體它將該窗口重新塑造成M乘N矩陣:
def clipSubwindowFromImage(img, i, j, winSize):
winI = img[i - winSize: i + winSize + 1, j - winSize : j + winSize + 1, : ]
res = np.vstack((winI[:,::3,:].reshape(winI.shape[1],3), winI[:,1::3,:].reshape(winI.shape[1],3), winI[:,2::3,:].reshape(winI.shape[1],3)))
return res
到目前爲止那麼神,說我們有winSize = 1, i = 1, j = 1
,並得到了9×3矩陣的結果:這個矩陣:
>> subWin = clipSubwindowFromImage(background12x12b, 1, 1, 1)
>> [[201 199 187]
[216 219 198]
[226 228 207]
[243 241 228]
[240 244 221]
[233 235 213]
[239 238 220]
[238 240 216]
[233 235 211]]
然後,我只是想有問題的產品,這樣的:
>>r1 = subWin.T.dot(subWin)
>>[[197 234 89]
[234 65 163]
[ 89 163 105]]
嗯,這是不正確的,正確的結果應該是:
>>[[477125 479466 438361]
[479466 481857 440483]
[438361 440483 402793]]
但是如果我手動初始化subWin
這樣的:
>>subWin = np.array([[201, 199, 187], [216, 219, 198], [226, 228, 207], [243, 241, 228], [240, 244, 221], [233, 235, 213],[239, 238, 220], [238, 240, 216],[233, 235, 211]])
我得到正確的結果。
我不明白,subWin
是在這兩種情況下(我檢查它)的SAME數組。有任何想法嗎?
可能你的原始數據類型是int8?點乘可能被打包以匹配數據類型。分配給np.array時,它可能會被轉換爲np.float。 – Aguy