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.

N'oubliez pas de lire la doc; la documentation a la réponse à votre question.

OriginalL'auteur sedeh | 2015-05-20