Warum ndarray einen Gleitkommazindex zulassen

Kann ich wissen, warum ndarray einen Gleitkomma-Index erlaubt und was bedeutet das?

>>> 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 >>> 

  • Regex für Links in HTML-Text
  • Warum erkennt man, dass man verschiedene Datenformen für verschiedene Regressoren verlangt?
  • Ersetzen Sie den Minimalwert in ein anderes in numpy Array
  • Ist die Verwendung von virtualenvwrapper mit Python3.3 bedeutet, dass ich nicht (oder sollte) nicht pyvenv verwenden?
  • Python zu Javascript
  • Handle mehrere Steckdosenverbindungen
  • 4 Solutions collect form web for “Warum ndarray einen Gleitkommazindex zulassen”

    Das kann nützlich sein, und ich frage mich, warum andere Klassen es nicht tun, wie es numpy tut.

    Eine besonders hilfreiche Zeit, wenn ich das bemerkt habe, wenn Ihr numpy Array ein Bild ist und Sie haben einen Event-Handler für Mausklicks, die Ihnen event.xdata und event.ydata als floats geben, dann können Sie immer noch eine Region von Interesse Mit den Scheiben, ohne sie in Pixel-Koordinaten zu konvertieren. Nehmen wir zum Beispiel an, dass Sie ein Bild zerschlagen oder ein Bild vergrößert haben, indem Sie eine Auswahl anklicken und ziehen – die Mausposition im Bild wird in der Regel auf Sub-Pixel-Koordinaten liegen, mit Ausnahme des speziellen Falles, in dem das Bild 1: 1-Skala angezeigt wird.

    Als Nebennote kann in ihren Index-Tricks-Klassen r_ und c_ eine nicht-ganzzahlige Slice-Notation (auch komplexe Zahlen in Slices) verwendet werden:

     >>>np.r_[0:3:0.1] array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9]) >>>np.c_[-1:1:9j] array([[-1. ], [-0.75], [-0.5 ], [-0.25], [ 0. ], [ 0.25], [ 0.5 ], [ 0.75], [ 1. ]]) 

    Grundsätzlich wird für numpy arrays int irgendeine Eingabe aufgerufen, die noch nicht eine ganze Zahl ist. Mit anderen Worten, es runden sich ab. 1.999 ergibt 1 , etc.

    z.B

     import numpy as np x = np.arange(10) print x[1.9] print x[2.1] 

    (Beachten Sie, dass dies die gleiche wie x[1] bzw. x[2] ist.)

    Dies gilt auch für Listen oder Arrays, die als Indikationen verwendet werden:

     print x[[1.2, 3.4]] 

    Ich konnte es nicht in der Quelle aufspüren, aber bei der Dokumentation, was in diesem Fall passiert wird, ist ein Scheibenobjekt ( http://docs.scipy.org/doc/numpy/reference/arrays. Indexing.html ), und es sieht aus wie die ints als ints auf die numpy Seite der Dinge geworfen werden.

    Die Verwendung eines Gleitkomma-Index in einem ndarray ist nicht mehr zulässig und wirft einen Fehler ab Version 1.12 auf.

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

    Die Indexierung mit Floats erhöht IndexError, zB eine [0, 0.0]. ( Siehe 1.11 Versionshinweise )

    Die Indexierung mit Floats erhöht den IndexError, zB einen [0, 0.0]. ( Siehe 1.12 Versionshinweise )

    (Meine Betonung)

    Python ist die beste Programmiersprache der Welt.