Gibt es eine einfache Möglichkeit, ein unveränderliches NumPy-Array zu erstellen?
Wenn man eine Klasse ableiten muss, um ndarraydies zu tun, was ist die Mindestmenge an Methoden, die man überschreiben muss, um Unveränderlichkeit zu erreichen?
@lafrasu Was würdest du sagen, ist die bevorzugte Form, setflags()oder flags.writeable=?
NPE
3
@aix: Ein kurzer Blick auf die Dokumentation würde den Eindruck erwecken, dass die beiden Ansätze identisch sind. Persönlich bevorzuge ich die Verwendung einer Methode zum Festlegen von Attributen.
Lafras
3
Macht es das auch einprägsam?
Endolith
8
WICHTIG!! Numpy hat KEIN unveränderliches Array. Arrays mit .flags.writeable = Falsesind immer noch nicht unveränderlich. Wenn xes sich um ein Array handelt, wird y = x[:]; x.flags.writeable = False; y[0] = 5das erste Element von xto aktualisiert 5.
Antworten:
Sie können ein numpy-Array nicht beschreibbar machen:
a = np.arange(10) a.flags.writeable = False a[0] = 1 # Gives: ValueError: assignment destination is read-only
Siehe auch die Diskussion in diesem Thread:
http://mail.scipy.org/pipermail/numpy-discussion/2008-December/039274.html
und die Dokumentation:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flags.html
quelle
a.setflags(write=False)
.setflags()
oderflags.writeable=
?.flags.writeable = False
sind immer noch nicht unveränderlich. Wennx
es sich um ein Array handelt, wirdy = x[:]; x.flags.writeable = False; y[0] = 5
das erste Element vonx
to aktualisiert5
.