tengo el siguiente código que primero selecciona elementos de una matriz NumPy con una máscara índice lógico:Uso de múltiples niveles de máscara índice booleano en NumPy
import numpy as np
grid = np.random.rand(4,4)
mask = grid > 0.5
Deseo utilizar una segunda máscara boolean contra éste para seleccionar objetos 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
esto no es del todo el mismo problema que se señalan en esta cuestión de forma: Numpy array, how to select indices satisfying multiple conditions? - como yo estoy usando generación de números aleatorios, no quiero tener que generar una máscara completa, solo para los elementos seleccionados por primera máscara
Perfecto, justo lo que estaba buscando. – Hemmer
También hay copia de matrices involucradas en el fragmento que publicó? – Hemmer
@Hemmer: hay nuevas matrices creadas por 'np.where' y' a [second_mask] '. El tamaño de esas matrices depende de la cantidad de elementos True en 'mask' y' second_mask' y es independiente del tamaño de 'grid'. – NPE