Ho circa 100.000 array bidimensionali in cui è necessario applicare i filtri locali. Entrambe le dimensioni hanno una dimensione uniforme e la finestra si trova su un pezzo 2x2 e sposta ulteriormente 2 pezzi, in modo che ogni elemento si trovi in una finestra una volta. L'output è una matrice binaria bidimensionale della stessa dimensione e anche il mio filtro è un pezzo binario 2x2. Le parti del mio filtro che sono 0 verranno mappate a 0, le parti del mio filtro che sono tutte 1 mappano a 1 se hanno lo stesso valore e mappano a 0 se non sono tutte uguali. Ecco un esempio:Applicazione efficiente della funzione sullo spostamento dell'array numpy della finestra
Filter: 0 1 Array to filter: 1 2 3 2 Output: 0 1 0 0
1 0 2 3 3 3 1 0 0 0
Certo che posso fare questo utilizzando un doppio ciclo for tuttavia questo è molto inefficiente e ci deve essere un modo migliore. Ho letto questo: Vectorized moving window on 2D array in numpy tuttavia sono incerto su come applicarlo al mio caso.
Lo stesso approccio può essere fatto con 'np.kron (~ np.any (np.diff (A4D [..., f == 1]), -1), f) ';-) –
@morningsun Ah si il' kron' per la moltiplicazione all'ultimo passo! Grazie! – Divakar