J'ai deux listes d'index ( IDX [0] code> et IDX [1] code>), et je devrais supprimer les lignes correspondantes de Numpy Array Y_TEST .poSp>y_testle
13 1 10
3 Réponses :
Vous pouvez utiliser Numpy.Delete qui Supprime les sous-bras le long de l'axe.
np.delete(y_test, idx, axis=0)
Cette solution me donne un résultat étrange. Dans mes données réelles définies, la forme de y_test code> est (60000,1). Ensuite, la longueur de IDX code> est 6000. Ainsi, je m'attends au résultat de np.delete (Y_TEST, IDX, Axis = 0) Code> Pour avoir la forme (54000,1), mais c'est 56846 code>
Sans les données réelles, je ne peux que deviner, mais peut-être que les entrées in IDX ne sont pas uniques. Vous pouvez essayer numpy.unique et comparer les tailles.
Au lieu d'éliminer des éléments, faites simplement un nouveau tableau avec les personnes désirées. Cela permettra à toute indexation future de se faire cogner et de maintenir l'ancien tableau.
import numpy as np y_test = np.asarray([[12, 11, 10], [1, 2, 2], [3, 2, 3], [4, 1, 2], [13, 1, 10]]) idx = [[0, 2], [1, 3]] # flatten list of lists idx_flat = [i for j in idx for i in j] # assign values that are NOT in your idx list to a new array result = [row for num, row in enumerate(y_test) if num not in idx_flat] # cast this however you want it, right now 'result' is a list of np.arrays print result [array([13, 1, 10])]
Puisque vous utilisez numpy, je suggère de masquer de cette manière.
p>
générer un masque de ceux que Configurez sur Zero Eléments à l'index dans IDX CODE>: P> y_test[~np.all(y_test * mask == 0, axis=1)]
#=> [[13 1 10]]
Que veux-tu dire?
Pas
+ code>, mais& code> pour booléen et opérationQuel était
~ [0,2] code> censé faire?[0,2] + [1,3] CODE> Fonctionne Pour rejoindre 2 Listes produisant[0,2,1,3] code>.Si
IDX code> est une matrice numpue, à l'aide de l'opérateur de négation binaire, il est pas i> faire ce que vous pensez que c'est.