Iterando una función sobre un arreglo.
Tengo una función que toma una matriz tridimensional y enmascara ciertos elementos dentro de la matriz basándose en condiciones específicas. Ver abajo:
función para enmascarar una matriz
def masc(arr,z):
return(np.ma.masked_where((arr[:,:,2] <= z+0.05)*(arr[:,:,2] >= z-0.05), arr[:,:,2]))
Arr es una matriz 3D y z es un valor único.
Ahora quiero iterar esto para múltiples valores de Z. Aquí hay un ejemplo con 2 valores de z:
maskedarray11 = masc(xyz,z1)
maskedarray12 = masc(xyz,z2)
masked1 = maskedarray11.mask + maskedarray12.mask
maskedarray1 = np.ma.array(xyz[:,:,2],mask=masked_1)
El masked_array1 me da exactamente lo que estoy buscando.
He empezado a escribir un bucle for para iterar esto sobre una matriz 1D de valores Z:
mask1 = xyz[:,:,2]
for i in range(Zalldim):
mask1 += (masc(xyz,Z_all[i]).mask)
maskedarray1 = np.ma.array(xyz[:,:,2], mask = mask1)
Z_all es una matriz de 7 valores z únicos. Este código no funciona (toda la matriz termina enmascarada), pero siento que estoy muy cerca. ¿Alguien ve si estoy haciendo algo mal?
davy.ai
¿Cómo puedo iterar una función sobre múltiples valores de Z para enmascarar una matriz tridimensional?