¿Existe una forma sencilla de crear una matriz NumPy inmutable?
Si uno tiene que derivar una clase ndarray
para hacer esto, ¿cuál es el conjunto mínimo de métodos que uno tiene que anular para lograr la inmutabilidad?
¿Existe una forma sencilla de crear una matriz NumPy inmutable?
Si uno tiene que derivar una clase ndarray
para hacer esto, ¿cuál es el conjunto mínimo de métodos que uno tiene que anular para lograr la inmutabilidad?
Respuestas:
Puede hacer que una matriz numpy no se pueda escribir:
a = np.arange(10)
a.flags.writeable = False
a[0] = 1
# Gives: ValueError: assignment destination is read-only
También vea la discusión en este hilo:
http://mail.scipy.org/pipermail/numpy-discussion/2008-December/039274.html
y la documentación:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flags.html
a.setflags(write=False)
.
setflags()
o flags.writeable=
?
.flags.writeable = False
todavía no son inmutables. Si x
es una matriz, y = x[:]; x.flags.writeable = False; y[0] = 5
actualiza el primer elemento de x
a 5
.