3 votos

Notación para argsort

Estoy escribiendo un artículo y necesito una descripción clara del argsort de numpy.

Si tomamos el conjunto $X = \{x_1,\ldots,x_n\}$ podríamos describir argsort como $$ \underset{i}{\text{argsort}X} = |\{x_j \mid x_j \lt x_i, x_j \in X \}| $$ ?

2voto

Milo Brandt Puntos 23147

Su descripción no es correcta; por ejemplo, si toma el argsort de $[9, 7, 8]$ debes obtener $[1, 2, 0]$ porque el término más bajo está en el índice $1$ en la lista, el siguiente está en el índice $2$ y el último está en el índice $0$ . Su definición da $[2, 0, 1]$ que representa que el término en el índice zeroth ( $9$ ) termina en el segundo índice cuando se ordena - pero eso no es lo que devuelve el argsort de Python. Formalmente, si estás pensando en permutaciones, tu descripción devuelve la permutación inversa a la devuelta por argsort.

Creo que es mejor describir la condición posterior:

Si L es una lista, entonces argsort(L) es la permutación lexicográficamente menor de los índices [0, ... , len(L) - 1] tal que L[argsort(L)] está ordenada.

Esto supone que tu lector está de acuerdo con la convención de Python de indexar una secuencia por otra - de lo contrario, tendrías que expandirlo como L[argsort(L)[0]], L[argsort(L)[1]], ... . También se puede tomar una descripción alternativa algo más explícita como ejemplo de un problema típico de clasificación:

argsort(L) devuelve la lista [0, ... , len(L) - 1] ordenados según el orden definido por i < j si L[i] < L[j] o L[i]=L[j] y i < j en el orden habitual de los números enteros.

Este tipo de descripción también es bastante clara y podría ser más apreciada por cualquiera que lea el artículo y no esté usando numpy, ya que es fácil decirle a un algoritmo de ordenación genérico que haga esta tarea si no se proporciona argsort en cualquier entorno en el que esté trabajando el lector.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X