2017-08-16 2 views
0

Ich habe einen symmetrischen 1D numpy Array zum Beispiel so etwas wie dieses:Wie wird ein 1D-Array in ein symmetrisches 3D-Array umgewandelt?

0 1 2 1 0 

Wie konnte ich mich wenden diese in ein 3D-Array (ein bisschen ähnlich einer Gaußschen Kernel), wobei der Wert 2 in der Mitte?

Als Beispiel dafür, was ich meine (obwohl die Mathematik wahrscheinlich nicht richtig ist), in 2D wäre dies so etwas wie diese (obwohl ich es brauche 3D zu sein):

0 0 0 0 0 
0 0.5 1 0.5 0 
0 1 2 1 0 
0 0.5 1 0.5 0 
0 0 0 0 0 
+0

FYI: Ein * Gaussian * Kernel ist eine sehr spezifische Sache. Ihre Daten sind kein Gaussian-Kernel. –

Antwort

1

Erkenntnis, dass dies nicht ein Gauß-Kern, ist hier, wie Sie berechnen es:

center = a[a.size // 2] 
(a[:, np.newaxis].repeat(a.size, axis=1) * a)\ 
    [:, :, np.newaxis].repeat(a.size, axis=2) * a \ 
/center ** 2 

(. werde nicht hier die ganze Ausgabe einfügen)

Verwandte Themen