Seite 1 von 1

Numpy: poly1d mutable oder immutable?

Verfasst: Montag 21. April 2014, 13:38
von YKnot
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

Re: Numpy: poly1d mutable oder immutable?

Verfasst: Montag 21. April 2014, 14:20
von 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.

Re: Numpy: poly1d mutable oder immutable?

Verfasst: Montag 21. April 2014, 15:16
von YKnot
Ah, danke :) Ich dachte, es wäre "besser", wenn *jede* Operation das gleiche macht, aber dem ist also nicht so.

Schönen Tag noch :)

Re: Numpy: poly1d mutable oder immutable?

Verfasst: Montag 21. April 2014, 15:38
von 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.