¿Existe una forma sencilla de crear una matriz NumPy inmutable?
Si uno tiene que derivar una clase ndarraypara hacer esto, ¿cuál es el conjunto mínimo de métodos que uno tiene que anular para lograr la inmutabilidad?
@lafrasu ¿Cuál dirías que es la forma preferida setflags()o flags.writeable=?
NPE
4
@aix: un vistazo rápido a la documentación haría parecer que los dos enfoques son idénticos. Personalmente, prefiero usar un método para establecer atributos.
lafras
3
¿Esto también lo hace memorable?
endolito
8
¡¡IMPORTANTE!! Numpy NO tiene una matriz inmutable. Las matrices con .flags.writeable = Falsetodavía no son inmutables. Si xes una matriz, y = x[:]; x.flags.writeable = False; y[0] = 5actualiza el primer elemento de xa 5.
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
fuente
a.setflags(write=False)
.setflags()
oflags.writeable=
?.flags.writeable = False
todavía no son inmutables. Six
es una matriz,y = x[:]; x.flags.writeable = False; y[0] = 5
actualiza el primer elemento dex
a5
.