Numpy: poly1d mutable oder immutable?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
YKnot
User
Beiträge: 2
Registriert: Montag 21. April 2014, 10:38

Hey :D

Gibt es so etwas wie "half-mutable", weil numpys poly1d arbeitet meiner Meinung so :P

Bsp.:

Code: Alles auswählen

import numpy as np

a = np.poly1d([1,2,3])
b = a

a[0] = 2

print(a, b, sep='\n')
# 1x^2 + 2x + 2
# 1x^2 + 2x + 2

a += 1

print(a, b, sep='\n')
# 1x^2 + 2x + 3
# 1x^2 + 2x + 2    # IMHO sollte b doch immer noch == a sein (?)
Ist das ok oder inkonsistent?

Gruss
YKnot
BlackJack

@YKnot: ``+=`` erzeugt offensichtich ein neues Objekt und verändert nicht das bestehende. Nur das man ein Objekt verändern kann, heisst ja nicht das *jede* Operation das tut.
YKnot
User
Beiträge: 2
Registriert: Montag 21. April 2014, 10:38

Ah, danke :) Ich dachte, es wäre "besser", wenn *jede* Operation das gleiche macht, aber dem ist also nicht so.

Schönen Tag noch :)
BlackJack

@YKnot: Ich denke viele Leute währen irritiert wenn die Addition einen Operanden verändern würde, also wenn bei ``a + b`` sich der Wert von `a` ändert. Und ``a += b`` ist erst einmal das selbe wie ``a = a + b``. Nur wenn der Typ ``+=`` selber implementiert und dabei den ersten Operanden verändert, bedeutet es etwas anderes. Und ob ``a += b`` etwas anderes als Ergebnis oder Effekt hat als ``a = a + b`` hängt stark davon ab was der Autor des jeweiligen Datentyps implementiert, oder eben auch nicht implementiert.
Antworten