11
votes

Attribuer une valeur à plusieurs tranches dans NUMPY

dans MATLAB, vous pouvez affecter une valeur à plusieurs tranches de la même liste: xxx pré>

Comment pouvez-vous faire cela en python avec une matrice numpue? P>

>>> a = np.arange(10)

>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> a[1:3,7:9] = 10
IndexError: too many indices


2 commentaires

Une raison pour laquelle vous voudrez peut-être le faire dans une déclaration au lieu de le faire dans deux déclarations?


@Sukritkalra Je ne peux pas parler pour l'auteur de la question, mais un exemple de cas est quand on tente de former une compréhension de la liste d'un tel multicaison (ce que j'essaie de faire et pourquoi je suis arrivé à cette question)


3 Réponses :


8
votes
a = np.arange(10)
a[[range(3)+range(6,9)]] = 10
#or a[[0,1,2,6,7,8]] = 10 

print a
that should work I think ... I dont know that its quite what you want though

2 commentaires

Peut-on être atteint sans engourdir?


En effet. Numpy est le vrai roi des doublures.



14
votes

Vous pouvez également envisager d'utiliser np.r _ :

http://docs.scipy.org/doc/numpy/reference/generated/numpy.r_.html xxx


0 commentaires

2
votes

de http://docs.scipy.org/doc/numpy /User/basics.indexing.html (section "RABES D'INDEX"). Notez que les indices pour les tranches souhaitées doivent être contenues dans 'np.array ()'.

>>> x = np.arange(10,1,-1)
>>> x
array([10,  9,  8,  7,  6,  5,  4,  3,  2])

>>> x[np.array([3, 3, 1, 8])]
array([7, 7, 9, 2])


0 commentaires