Supprimer des lignes à sélectionner les indices d'un tableau numpy
Dans mon dataset j'ai près de 200 lignes, mais pour un minimum de travail par exemple, considérons le tableau suivant:
arr = np.array([[1,2,3,4], [5,6,7,8],
[9,10,11,12], [13,14,15,16],
[17,18,19,20], [21,22,23,24]])
Je peux prendre un échantillon aléatoire de 3 des lignes comme suit:
indexes = np.random.choice(np.arange(arr.shape[0]), int(arr.shape[0]/2), replace=False)
À l'aide de ces indices, je peux sélectionner mon cas de test comme suit:
testing = arr[indexes]
Je veux supprimer les lignes à ces indices et je peux utiliser les éléments restants pour ma formation.
De la poste ici, il semble que training = np.delete(arr, indexes)
devrait le faire. Mais j'ai 1d tableau à la place.
J'ai aussi essayé la suggestion ici à l'aide de training = arr[indexes.astype(np.bool)]
mais il ne donne pas une séparation nette. Je reçois élément [5,6,7,8] à la fois la formation et les ensembles de test.
training = arr[indexes.astype(np.bool)]
testing
Out[101]:
array([[13, 14, 15, 16],
[ 5, 6, 7, 8],
[17, 18, 19, 20]])
training
Out[102]:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
Une idée de ce que je fais de mal? Merci.
OriginalL'auteur sedeh | 2015-05-20
Vous devez vous connecter pour publier un commentaire.
Pour supprimer indexé lignes à partir d'un tableau numpy:
OriginalL'auteur farhawa
Une approche pourrait être de passer à la ligne restante indices avec
np.setdiff1d
et ensuite utiliser ces rangée d'indices, pour obtenir le résultat désiré -Ou de l'utilisation
np.in1d
à effet de levierboolean indexing
-OriginalL'auteur Divakar