Jak używać składni krojenia elipsy w Pythonie? [duplikat]
To pytanie ma już odpowiedź tutaj:
- co robi obiekt Elipsa Pythona? 10 odpowiedzi
Pojawiło się to w Hidden features of Python , ale nie widzę dobrej dokumentacji ani przykładów wyjaśniających, jak ta funkcja działa.
4 answers
Użyłbyś go w swojej klasie, ponieważ żadna klasa z niego nie korzysta.
Numpy używa go, zgodnie z dokumentacją . Kilka przykładów tutaj .
W swojej klasie używałbyś tego w ten sposób:
>>> 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
Oczywiście istnieje dokumentacja Pythona i odniesienie do języka. Ale to nie jest zbyt pomocne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-29 18:25:30
Elipsa służy do wycinania wyższych wymiarów struktur danych.
Ma to oznaczać w tym momencie Wstaw tyle pełnych plasterków (:
), aby rozszerzyć wielowymiarowy plasterek do wszystkich wymiarów .
Przykład :
>>> from numpy import arange
>>> a = arange(16).reshape(2,2,2,2)
Macie macierz 4-wymiarową rzędu 2x2x2x2. Aby zaznaczyć wszystkie pierwsze elementy w 4. wymiarze, można użyć notacji elipsy
>>> a[..., 0].flatten()
array([ 0, 2, 4, 6, 8, 10, 12, 14])
Co jest równoważne
>>> a[:,:,:,0].flatten()
array([ 0, 2, 4, 6, 8, 10, 12, 14])
In your own implementacje, możesz zignorować umowę wspomnianą powyżej i użyć jej do tego, co uznasz za stosowne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-21 15:50:14
Jest to kolejne użycie elips, które nie ma nic wspólnego z plasterkami: często używam go w komunikacji wewnątrz wątku z kolejkami, jako znaku, który sygnalizuje "zrobione"; jest tam, jest obiektem, jest singletonem, a jego nazwa oznacza" brak", a nie nadużywane None (które można umieścić w kolejce jako część normalnego przepływu danych). YMMV.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-02 10:03:49
Jak stwierdzono w innych odpowiedziach, może być używany do tworzenia plastrów.
Przydatne, gdy nie chcesz pisać wielu pełnych notacji (:
), lub gdy po prostu nie jesteś pewien, na czym polega wymiarowość manipulowanej tablicy.
To, co uważałem za ważne, aby podkreślić, a tego brakowało w innych odpowiedziach, to to, że może być używany nawet wtedy, gdy nie ma więcej wymiarów do wypełnienia.
Przykład:
>>> from numpy import arange
>>> a = arange(4).reshape(2,2)
Spowoduje to błąd:
>>> a[:,0,:]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: too many indices for array
To będzie praca:
a[...,0,:]
array([0, 1])
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-07 04:03:58