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 \}| $$ ?
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 \}| $$ ?
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, entoncesargsort(L)
es la permutación lexicográficamente menor de los índices[0, ... , len(L) - 1]
tal queL[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 pori < j
siL[i] < L[j]
oL[i]=L[j]
yi < 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 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.