Warum funktioniert die eingebaute Funktion abs () nicht mit Python-Listen, sondern korrekt mit NumPy-Arrays und Pandas-Serien (wie es vektorisiert wäre)?

MarianD

Warum funktioniert abs()die integrierte Funktion nicht mit Python-Listen, sondern korrekt mit NumPy-Arrays und Pandas-Serien?

Das Anwenden der integrierten abs()Funktion auf die Python-Liste löst eine Ausnahme aus

TypeError: Ungültiger Operandentyp für abs (): 'list'

Kein Wunder, es stimmt mit der Dokumentation überein:

abs (x)
Gibt den absoluten Wert einer Zahl zurück. Das Argument kann eine Ganzzahl oder eine Gleitkommazahl sein. Wenn das Argument eine komplexe Zahl ist, wird seine Größe zurückgegeben.

Dieselbe Funktion verhält sich jedoch korrekt (als vektorisierte Funktion) für NumPy-Arrays und Pandas-Serien:

In[2]: lst = [2, 0, -1]
In[3]: # abs(lst)             # bad operand type for abs(): 'list'

In[4]: import numpy as np
In[5]: arr = np.array(lst)
In[6]: abs(arr)               # no problem
Out[6]: array([2, 0, 1])

In[7]: import pandas as pd
In[8]: s = pd.Series(lst)
In[9]: abs(s)                 # no problem
Out[9]: 
0    2
1    0
2    1
dtype: int64

In[10]: abs.__class__
Out[10]: builtin_function_or_method

Wie ist es möglich?

MarianD

Die zitierte Dokumentation ist veraltet.

In der neuen Dokumentation (für Python 3.8.3) heißt es:

abs (x)
Gibt den absoluten Wert einer Zahl zurück. Das Argument kann eine Ganzzahl oder eine Gleitkommazahl sein. Wenn das Argument eine komplexe Zahl ist, wird seine Größe zurückgegeben. Wenn x __abs __ () definiert, gibt abs (x) x .__ abs __ () zurück.

Der letzte Satz ist neu und erklärt die Frage:

Die NumPy- ndarrayKlasse und die Pandas- SeriesKlasse definieren beide die magische __abs__()Methode.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

  1. 1

    Modbus Python Schneider PM5300

  2. 2

    Wie schließe ich mehrere Ordner mit der Variablen EXTRA_ARGS aus?

  3. 3

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

  4. 4

    Elasticsearch startet nicht nach dem Laden in viele Daten

  5. 5

    ElasticSearch - Knotensperren konnten nicht abgerufen werden

  6. 6

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  7. 7

    Eclipse Oxygen - Projekte verschwinden

  8. 8

    Wie kann ich den Kaskadenmodus global einstellen?

  9. 9

    ElasticSeach Auto Complete mit dem Vervollständigungsvorschlag, um das vollständige Dokument zurückzugeben

  10. 10

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  11. 11

    Bester Crawler, um festzustellen, ob er mit Technologien gebaut wurde?

  12. 12

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  13. 13

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  14. 14

    Wie füge ich eine Spalte in einer Zeile in der Ansible Jinja2-Vorlage mit der for-Schleife hinzu?

  15. 15

    Wie Verwenden von Httpclient mit jedem SSL-Zertifikat, egal wie „schlecht“ es ist

  16. 16

    Wie kann man eine Multi-Container-Anwendung in Steuerkarten erstellen?

  17. 17

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  18. 18

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  19. 19

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  20. 20

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  21. 21

    So erstellen Sie ein langes Etikett inline mit einem Eingabefeld

heißlabel

Archiv