Ich habe ein 2D-Array mit ganzen Zahlen, das MxN ist, und ich möchte das Array zu (BM) x (BN) erweitern, wobei B
Ergebnis ...
%Vor%Hier ist ein potentiell schneller Weg mit Schritttricks und Umformung:
%Vor% Die zugrunde liegenden Daten in a
werden kopiert, wenn reshape
aufgerufen wird. Daher gibt diese Funktion keine Ansicht zurück. Im Vergleich zur Verwendung von repeat
entlang mehrerer Achsen sind jedoch weniger Kopiervorgänge erforderlich.
Die Funktion kann dann wie folgt verwendet werden:
%Vor% Nun, für kleine Blöcke ist diese Methode etwas langsamer als die Verwendung von repeat
, aber schneller als kron
.
Für etwas größere Blöcke wird es jedoch schneller als andere Alternativen. Verwenden Sie zum Beispiel eine Blockform von (20, 20)
:
Die Lücke zwischen den Methoden nimmt mit zunehmender Blockgröße zu.
Auch wenn a
ein großes Array ist, kann es schneller sein als Alternativen:
Wahrscheinlich nicht der Schnellste, aber ..
%Vor%Es macht das Kronecker-Produkt , es handelt sich also um eine Multiplikation für jedes Element in der Ausgabe.