7
我正在做我的第一次真正進軍Python和NumPy做一些圖像處理。我有一個圖像加載爲3維NumPy陣列,其中軸0代表圖像帶,而軸1和2代表像素的行和列。由此,我需要採用代表每個像素的3x1矩陣並執行一些操作,這些操作會導致另一個3x1矩陣,這將用於構建結果圖像。NumPy中基於元素的矩陣乘法
我的第一種方法(簡體字,用隨機數據)看起來是這樣的:
import numpy as np
import random
factor = np.random.rand(3,3)
input = np.random.rand(3,100,100)
results = np.zeros((3,100,100))
for x in range(100):
for y in range(100):
results[:,x,y] = np.dot(factor,input[:,x,y])
但是,這在我看來是不雅的,效率低下。有沒有辦法在元素之FASION要做到這一點,例如:
results = np.dot(factor,input,ElementWiseOnAxis0)
在試圖找到一個解決這個問題我碰到this問題,這顯然是非常相似來了。然而,作者無法解決問題,他們的滿意度。我希望自2012年以來發生了一些變化,或者我的問題與他們的問題有很大的不同,使其更容易解決。
這對這些數據完美的作品,應該適應類似的問題,謝謝! – Joe 2014-09-19 13:28:33
在我的情況下輸入形狀是:(100,100,3)。花了我一段時間來理解它,但可能對其他人有用。在我的情況下,它是: results = np.einsum('ij,klj-> kli',factor,input) – Luigolas 2015-05-11 10:47:14