El nombre de indexado sofisticado (fancy indexing) es el nombre que da NumPy al uso de listas de números enteros para extraer filas del array en un cierto orden. Si partimos del siguiente array:
Podemos seleccionar una fila -ya lo hemos visto- indicando su índice como única referencia en la selección:
Pero ¿cómo podríamos seleccionar más de una fila no consecutiva simultáneamente? El indexado sofisticado nos permite este tipo de selecciones siendo posible, además, especificar el orden de las filas extraídas. Para ello deberemos usar como índice no un valor simple, sino una lista de valores simples, en la que cada valor representa una fila. De esta forma, podemos extraer las filas 3 y 1 -en este orden- usando como índice la lista [3, 1]:
Si, en lugar de usar como índice una lista, pasamos varias listas separadas por comas, se utiliza cada una de ellas para realizar una selección sobre el resultado de la anterior. Por ejemplo, si usamos como índice [3, 1], [2, 0]:
Vemos como con la primera lista ([3, 1]) se extraen las filas 3 y 1 (resultado [65]). De estas dos filas, con la segunda lista ([2, 0]) se están extrayendo el elemento de índice 2 de la primera fila (el 18) y el elemento de índice 0 de la segunda (el 6).