J'ai une matrice_1 pleine de valeurs numériques et ce que je voudrais faire est de le transformer en matrix_2 avec les valeurs (de matrix_1 triées), puis remplacez ces valeurs triées dans matrice 2 avec les indices d'origine de matrix_1. < p> Je ne veux pas utiliser de boucles car les matrices sont plutôt grandes. p> J'ai essayé utiliser np.ndenumérate sur la matrice d'origine mais il renvoie la matrice ( [Objet numpy.ndenumérate à 0x1a1A9Fce90], dtype = objet) P> J'ai maintenant essayé NP.argsort () mais cela ne semble pas fonctionner, éventuellement parce que toutes mes entrées sont des flotteurs .. . p> p>
3 Réponses :
Utilisation de np.argsort doit faire l'astuce:
[[(i+1,v+1) for v in enumerate(y)] for i, y in enumerate(x.tolist())] [[(1, 4), (1, 1), (1, 2), (1, 3)], [(2, 2), (2, 1), (2, 4), (2, 3)]]
Vous devez venir de R ou une autre langue qui commencent à indexer sur Utiliser p> quelle sortie p> 1 code>. Dans Python, les index démarrent à
0 code>, vous devez donc ajouter explicitement
+ 1 code> sur les index pour les faire démarrer à 1.
Argsort code> et ensuite
remodeler code> p>
array([[[4, 1],
[1, 1],
[2, 1],
[3, 1]],
[[2, 2],
[1, 2],
[4, 2],
[3, 2]]])
tourne dans les indices 2D: p> combine les tableaux en un, et remodeler: p> argsort code> appliqué sur la matrice aplatie: