Ho una matrice numpy 2D in cui alcuni valori sono zero e altri no. Sto cercando di trovare un modo efficace per trovare il maggior numero di zeri nell'array (restituendo il numero di zeri, nonché un'idea approssimativa di dove è il centro)Python - Modo efficiente per trovare l'area più grande di un valore specifico in un array numpy 2D
Ad esempio in questo array, I vorrebbe trovare il ciuffo di 9, con il centro di (3,4):
[[ 1, 1, 1, 0, 0 ],
[ 1, 0, 1, 1, 0 ],
[ 1, 1, 1, 1, 1 ],
[ 1, 1, 0, 0, 0 ],
[ 1, 1, 0, 0, 0 ],
[ 1, 1, 0, 0, 0 ]]
esiste un modo vettorializzare bella di realizzare qualcosa di simile in NumPy o SciPy?
I ciuffi saranno di forma approssimativamente circolare e non hanno buchi.
ndimage.label() da scipy fa qualcosa di simile a questo, ma non è proprio quello che sto cercando. Ho una sensazione numpy.where() e numpy.diff() potrebbe essere utile, ma non sono sicuro di come usarli in modo efficiente per risolvere questo problema.
E se c'è un buco? Stai dicendo che non ci saranno buchi perché sai qualcosa su come appare l'input, o perché vuoi escludere grumi con buchi? – user2357112
È perché so che l'ingresso non avrà alcun fori (e in tal caso, saranno estremamente raro) – Brent