Python - Effiziente Methode, um den größten Bereich eines bestimmten Wertes in einem zweidimensionalen Array zu finden

8

Ich habe ein zweidimensionales Array, in dem einige Werte Null sind und andere nicht. Ich versuche einen effizienten Weg zu finden, um die größte Ansammlung von Nullen im Array zu finden (indem ich die Anzahl der Nullen zurücksende, sowie eine ungefähre Vorstellung davon, wo das Zentrum ist)

Zum Beispiel würde ich in diesem Array den Büschel von 9 mit dem Mittelpunkt von (3,4) finden wollen:

%Vor%

Gibt es einen schönen vektorisierten Weg, um so etwas in numply oder scipy zu erreichen?

Die Klumpen sind ungefähr kreisförmig und haben keine Löcher in ihnen.

ndimage.label () von scipy macht etwas in der Nähe, aber ist nicht ganz das, wonach ich bin. Ich habe das Gefühl, numpy.where () und numpy.diff () könnte hilfreich sein, aber nicht sicher, wie man sie effizient zur Lösung dieses Problems verwendet.

    
Brent 21.11.2013, 00:42
quelle

1 Antwort

9

Sie sind fast da, Sie müssen nur ndimage.label mit numpy.bincount kombinieren:

%Vor%

Sobald Sie clump_mask haben, können Sie den Schwerpunkt berechnen oder eine andere Methode verwenden, um das Zentrum zu erhalten.

    
Bi Rico 21.11.2013, 00:54
quelle