Frage

Das kam in Versteckte Funktionen von Python , aber ich kann eine gute Dokumentation nicht sehen oder Beispiele, die erklären, wie das Feature funktioniert.

War es hilfreich?

Lösung

Sie es in Ihrer eigenen Klasse verwenden würden, da keine eingebaute Klasse Gebrauch macht.

Numpy verwendet sie, wie in der Dokumentation angegeben. Einige Beispiele hier .

Ihre eigene Klasse, können Sie es wie folgt verwenden würde:

>>> class TestEllipsis(object):
...     def __getitem__(self, item):
...         if item is Ellipsis:
...             return "Returning all items"
...         else:
...             return "return %r items" % item
... 
>>> x = TestEllipsis()
>>> print x[2]
return 2 items
>>> print x[...]
Returning all items

Natürlich gibt es die Python Dokumentation , und Sprachreferenz . Aber das ist nicht sehr hilfreich.

Andere Tipps

Die Auslassungszeichen wird verwendet, höherdimensionalen Datenstrukturen zu schneiden.

Es ist so konzipiert bedeuten an dieser Stelle einfügen, wie viele Vollscheiben (:) die mehrdimensionale Scheibe auf alle Dimensionen erweitern .

Beispiel: :

>>> from numpy import arange
>>> a = arange(16).reshape(2,2,2,2)

Nun, Sie haben eine 4-dimensionale Matrix der Ordnung 2x2x2x2. Um alle ersten Elemente in der 4. Dimension auswählen, können Sie auf die Ellipsen-Notation

>>> a[..., 0].flatten()
array([ 0,  2,  4,  6,  8, 10, 12, 14])

das ist äquivalent zu

>>> a[:,:,:,0].flatten()
array([ 0,  2,  4,  6,  8, 10, 12, 14])

In Ihrem eigenen Implementierungen, sind Sie frei, den Vertrag oben erwähnt zu ignorieren und es zu verwenden, für was auch immer Sie möchten.

Dies ist eine weitere Verwendung für Auslassungspunkte, die nichts mit Scheiben zu tun hat: Ich benutze es oft in intra-Thread-Kommunikation mit Warteschlangen, als Marke, die „Done“ signalisiert; es ist da, es ist eine Aufgabe, es ist ein Singleton, und sein Name bedeutet „Mangel an“, und es ist nicht überbeansprucht None (die in einer Warteschlange als Teil des normalen Datenflusses gesetzt werden könnte). YMMV.

Wie in anderen Antworten erwähnt, kann es für die Erstellung von Scheiben verwendet werden. Nützlich, wenn Sie nicht wollen, viele Vollscheiben Notationen (:) einzutragen, oder wenn Sie gerade nicht sicher, auf was Dimensionalität des Arrays manipuliert wird.

Was ich dachte, wichtig hervorzuheben, und dass auf den anderen Antworten fehlt, ist, dass es auch dann verwendet werden kann, wenn es keine weiteren Dimensionen gefüllt werden.

Beispiel:

>>> from numpy import arange
>>> a = arange(4).reshape(2,2)

Dies wird in Fehlern führen:

>>> a[:,0,:]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: too many indices for array

Dies funktioniert:

a[...,0,:]
array([0, 1])
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top