Tengo un código que intenta encontrar el contenido de una matriz en índices especificados por otra, que puede especificar índices que están fuera del alcance de la matriz anterior.Indexación con matrices enmascaradas en numpy
input = np.arange(0, 5)
indices = np.array([0, 1, 2, 99])
Lo que quiero hacer es esto: de entrada de impresión [índices] y obtener [0 1 2]
Pero esto produce una excepción (como se esperaba):
IndexError: index 99 out of bounds 0<=index<5
Así que pensé que podría usar matrices enmascaradas para ocultar los índices de fuera de límites:
indices = np.ma.masked_greater_equal(indices, 5)
Pero aún así:
>print input[indices]
IndexError: index 99 out of bounds 0<=index<5
A pesar de que:
>np.max(indices)
2
Así que estoy tener que llenar la matriz de máscaras en primer lugar, lo cual es molesto, ya que no sé qué llenar valor que podría utilizar no seleccionar ningún índices para los que están fuera de rango:
de entrada de impresión [np.ma.filled (índices, 0)]
[0 1 2 0]
Así que mi pregunta es: ¿cómo se puede utilizar numpy de manera eficiente para seleccionar índices de forma segura desde una matriz sin sobrepasar los límites de la matriz de entrada?
D'oh eso funciona. Todavía tengo curiosidad sobre por qué no podemos usar correctamente matrices enmascaradas para la indexación, pero supongo que en realidad no importa. – Widjet