
Wenn Sie ein Element oder einen Bereich mit [] des NumPy-Arrays numpy.ndarray angeben, können Sie die in Python integrierte Konstante Ellipsis (…) verwenden.
Dieser Artikel enthält Folgendes:
- Python eingebaute Konstante Ellipsis (…)
- Ellipse (…) in NumPy verwenden
If SIE festlegen möchten, ob Elemente beim Drucken von ndarray mit print() abgeschnitten werden sollen oder nicht, lesen Sie den following Artikel.
Der Beispielcode gilt für Python3 (3.7.2). Beachten Sie, dass das Verhalten in Python2 anders sein kann.
Python eingebaute Konstante Ellipsis (…)
In Python3 ist Ellipsis als eingebaute Konstante definiert.
print(Ellipsis)
# Ellipsis
Auslassungspunkte können auch als … (3 Punkte) beschrieben werden.
Ellipse und … sind dasselbe Ellipsenobjekt.
print(type(Ellipsis))
# <class 'ellipsis'>
print(type(...))
# <class 'ellipsis'>
print(Ellipsis is ...)
# True
Ab Python 3.7.2 gibt es keine besondere Verwendung für Ellipsis (…) als klassische Grammatik von Python, aber wie unten gezeigt, hat NumPy eine Möglichkeit, Ellipsis (…) zu verwenden.
Ellipse (…) in NumPy verwenden
In NumPy können Sie Auslassungspunkte (…) verwenden, um Zwischenbemaßungen wegzulassen, WENN SIE ODER Elemente mit [] angeben.
Nehmen Sie das folgende vierdimensionale Array als Beispiel.
import numpy as np
a = np.arange(120).reshape(2, 3, 4, 5)
print(a.shape)
# (2, 3, 4, 5)
Wenn Sie beispielsweise nur die letzte Dimension angeben möchten, können Sie: verwenden.
print(a[:, :, :, 0])
# [[[ 0 5 10 15]
# [ 20 25 30 35]
# [ 40 45 50 55]]
#
# [[ 60 65 70 75]
# [ 80 85 90 95]
# [100 105 110 115]]]
Mit … können Sie schreiben:
print(a[..., 0])
# [[[ 0 5 10 15]
# [ 20 25 30 35]
# [ 40 45 50 55]]
#
# [[ 60 65 70 75]
# [ 80 85 90 95]
# [100 105 110 115]]]
Dasselbe gilt, wenn SIE nur das erste und letzte Maß angeben möchten. Sie können das Maß in der Mitte weglassen mit ….
print(a[0, :, :, 0])
# [[ 0 5 10 15]
# [20 25 30 35]
# [40 45 50 55]]
print(a[0, ..., 0])
# [[ 0 5 10 15]
# [20 25 30 35]
# [40 45 50 55]]
Sie können Auslassungspunkte anstelle von … verwenden.
print(a[Ellipsis, 0])
# [[[ 0 5 10 15]
# [ 20 25 30 35]
# [ 40 45 50 55]]
#
# [[ 60 65 70 75]
# [ 80 85 90 95]
# [100 105 110 115]]]
print(a[0, Ellipsis, 0])
# [[ 0 5 10 15]
# [20 25 30 35]
# [40 45 50 55]]
Bei : muss die Anzahl von : an die Anzahl der Dimensionen angepasst werden, aber SIE müssen sich nicht darum kümmern, da ….
Wenn es zwei oder mehr … gibt, ist es unklar, wo weggelassen werden soll, daher WIRD ein Fehler ausgelöst.
# print(a[..., 0, ...])
# IndexError: an index can only have a single ellipsis ('...')
Wird : bis zur letzten Dimension wiederholt, kann : weggelassen werden. Da muss man nicht schreiben….
print(a[0, 0, :, :])
# [[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]
# [15 16 17 18 19]]
print(a[0, 0])
# [[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]
# [15 16 17 18 19]]
print(a[0, 0, ...])
# [[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]
# [15 16 17 18 19]]