Ho il seguente codice che prima seleziona gli elementi di una matrice NumPy con una maschera indice logico:Utilizzando più livelli di maschera indice booleano NumPy
import numpy as np
grid = np.random.rand(4,4)
mask = grid > 0.5
desidero utilizzare una seconda maschera booleana contro questa per individuare oggetti con:
masklength = len(grid[mask])
prob = 0.5
# generates an random array of bools
second_mask = np.random.rand(masklength) < prob
# this fails to act on original object
grid[mask][second_mask] = 100
questo non è del tutto lo stesso problema come elencati in questa domanda SO: Numpy array, how to select indices satisfying multiple conditions? - come io sto usando generazione di numeri casuali, non voglio avere per generare una maschera completa, solo per gli elementi selezionati dal prima maschera
Perfetto, proprio quello che stavo cercando. – Hemmer
Inoltre c'è qualche copia degli array coinvolti nel frammento che hai postato? – Hemmer
@Hemmer: ci sono nuovi array creati da 'np.where' e' a [second_mask] '. La dimensione di questi array dipende dal numero di elementi True in 'mask' e' second_mask' ed è indipendente dalla dimensione di 'grid'. – NPE