'daki Eleman-bilge matris çarpımı Python ve NumPy'ye ilk görüntüyü bazı görüntü işleme yapmak için yapıyordum. Eksen 0 görüntü bantlarını temsil ederken 3 boyutlu NumPy Array olarak yüklenmiş bir görüntü var, eksen 1 ve 2 sütun ve piksel satırlarını temsil eder. Bundan sonra, her bir pikseli temsil eden 3x1 matrisini almam ve bir sonuç görüntüsü oluşturmak için kullanılacak olan başka bir 3x1 matrisiyle sonuçlanan birkaç işlem yapmam gerekiyor.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])
Ama bu beni inelegant ve verimsiz grev:
Benim ilk yaklaşım (basitleştirilmiş ve rastgele verilerle) buna benzer. Açıkçası oldukça benzer this sorusuna, rastladım bu soruna bir çözüm bulmak için çalışırken, öğeye fasion bunu yapmanın bir yolu, ör .:
results = np.dot(factor,input,ElementWiseOnAxis0)
var mı. Ancak, yazar problemi tatmin edemedi. 2012'den beri bir şeyin değiştiğini umuyorum ya da benim problemim, daha kolay çözülebilir hale getirmek için onlarınkinden yeterince farklı.
Bu veriler, bu veriler için mükemmel çalışıyor ve benzer sorunlara da uyarlanabilmeli, teşekkürler! – Joe
Benim durumumda giriş şekli: (100, 100, 3). Anlamak için biraz zamanımı aldı, ama başkalarına yararlı olabilir. Benim durumumda: results = np.einsum ('ij, klj-> kli', factor, input) – Luigolas