11
votes

Pourquoi Ndarray autorise l'index de points flottants

Puis-je savoir pourquoi Ndarray permet d'accéder à l'index de point flottant et de quoi cela signifie-t-il?

>>> wk1 = numpy.arange(10)
>>> wk1[1:2.8]
array([1])
>>> wk1 = [1,2,3,4,5,6,7,8,9,10]
>>> wk1[1:2.8]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: slice indices must be integers or None or have an __index__ method
>>>


1 commentaires

Cela ne fonctionne plus. Voir Stackoverflow.com/a/43305317/2898712


4 Réponses :


3
votes

Fondamentalement, pour les matrices numpues, int code> est appelé toute entrée qui n'est pas déjà un entier. En d'autres termes, il s'y couche. 1.999 code> rendements 1 code>, etc.

par exemple p> xxx pré>

(Notez que c'est la même que x [1] code> et x [2] code>, respectivement.) p>

Ceci s'applique également aux listes ou aux tableaux utilisés comme indices: P>

print x[[1.2, 3.4]]


0 commentaires

3
votes

Je n'ai pas été en mesure de le suivre dans la source, mais en regardant la documentation, ce qui est passé dans ce cas est un objet de tranche ( http://docs.cipy.org/doc/numpy/reference/arrays.indexing.html ), et on dirait que le Les entrées sont en train de lancer comme intens sur le côté numpy des choses.


0 commentaires

5
votes

Cela peut être utile et je me demande pourquoi les autres classes ne ne le font pas comme ça que Numpy fait.

Un temps particulièrement utile quand j'ai remarqué que ceci est si votre tableau NOBPY est une image, et vous avez un gestionnaire d'événements pour les clics de souris qui vous donnent event.xdata et event.ydata comme floatts, vous pouvez toujours obtenir une région d'intérêt à l'aide de la tranches sans avoir à les convertir en coordonnées de pixels. Par exemple, supposons que vous cultiviez une image ou de zoomer dans une image en cliquant sur et en faisant glisser une sélection - la position de la souris dans l'image sera généralement sur les coordonnées sous-pixels, à l'exception du cas particulier où l'image est affichée 1: 1.

comme une note latérale, la notation de tranches non entières (nombre complexes des tranches) peut être utilisée dans les classes de leurs astuces d'index r _ et c _ , Par exemple: xxx


1 commentaires

Je suis d'accord et je l'utilise beaucoup aussi pour les raisons que vous avez décrites. Cependant, le mantra Python est "explicite vaut mieux que implicite", donc d'être juste, c'est probablement pourquoi la plupart des autres objets Python ne le font pas de cette façon. Quoi qu'il en soit, il est certainement damné pratique!



6
votes

L'utilisation d'un indice de point flottant dans un ndarray n'est plus autorisé et soulève une erreur à partir de la version 1.12.

IndexError: only integers, slices (`:`), ellipsis (`...`),
    numpy.newaxis (`None`) and integer or boolean arrays are valid indices


0 commentaires