bounding box of numpy array

Angenommen, Sie haben ein 2D-Zahlenfeld mit zufälligen Werten und umgebenden Nullen.

Beispiel "geneigtes Rechteck":

import numpy as np
from skimage import transform

img1 = np.zeros((100,100))
img1[25:75,25:75] = 1.
img2 = transform.rotate(img1, 45)

Now Ich möchte das kleinste Begrenzungsrechteck für alle Daten ungleich Null finden. Beispielsweise

a = np.where(img2 != 0)
bbox = img2[np.min(a[0]):np.max(a[0])+1, np.min(a[1]):np.max(a[1])+1]

Was würde das sein schnellste Weg, um dieses Ergebnis zu erzielen? Ich bin sicher, dass es einen besseren Weg gibt, da die Funktion np.where ziemlich viel Zeit in Anspruch nimmt, wenn ich z. mit 1000x1000 Datensätzen.

Edit: Sollte auch in 3D funktionieren ...

Antworten auf die Frage(6)

Ihre Antwort auf die Frage