J'ai un simple tableau numpy. Je souhaite sélectionner toutes les lignes sauf les 1ère et 6ème J'ai essayé:
TypeError: bad operand type for unary ~: 'list'
J'obtiens l'erreur suivante:
temp = np.array([1,2,3,4,5,6,7,8,9]) t = temp[~[0,5]]
Quelle est la bonne façon de procéder?
p>
3 Réponses :
Vous ne pouvez pas créer les indices de cette façon. Au lieu de cela, vous pouvez créer une plage de nombres de 0 à temp.size
et supprimer les index indésirables:
In [16]: ind = np.concatenate((np.arange(1, 5), np.arange(6, temp.size))) In [17]: temp[ind] Out[17]: array([2, 3, 4, 5, 7, 8, 9])
Ou simplement le créer comme suit:
XXX
Vous pouvez utiliser np.r_ objet numpy qui concatène le tableau en en les décomposant en utilisant les indices donnant la sortie résultante.
np.r_[temp[1:5], temp[6:]]
Le code ci-dessus concatène les deux tableaux qui sont découpés à partir du tableau d'origine et donc du tableau résultant sans le indices spécifiés.
Vous pouvez utiliser numpy.delete pour supprimer des éléments à une position d'index spécifique:
bool_idx = np.zeros(len(temp), dtype=bool) bool_idx[[0, 5]] = True t = temp[~bool_idx]
Ou vous pouvez créer un tableau booléen, qu'il est possible de nier les indices:
t = np.delete(temp, [0, 5])
Possibilité de duplication de Comment supprimer des éléments spécifiques dans un tableau numpy a>