[Python-es] Matrices en python

Francesc Altet faltet en carabos.com
Mar Ene 29 20:57:54 CET 2008


A Tuesday 29 January 2008, Daniel García Moreno escrigué:
> Hoy he tenido un pequeño problema creando matrices en python, y es
> que yo las creaba de esta forma:
>
> matriz = [[0]*3]*2
> una matriz de 2 filas y 3 columnas.
>
> Pero cuando modifico un elemento de una fila, se modifican de todas:
>
> matriz[0][0] = 1
> print matriz
> [[1, 0, 0], [1, 0, 0]]
>
> Tras muchas vueltas, me he dado cuenta de que es el mismo objeto el
> que se pone en cada fila, y por supuesto no es eso lo que yo buscaba.
>
> Lo he solucionado creando la matriz así:
> matriz = [[0 for i in range(3)] for j in range(2)]
>
> Mi pregunta es:
> ¿Hay alguna mejor forma de crear una matriz de 0s?

Pues sí.  La mejor manera de trabajar con matrices es, desde muchos 
puntos de vista, usar NumPy (numpy.scipy.org).  Mira un ejemplo de uso:

In [10]: import numpy
In [11]: matriz = numpy.zeros((2,3), dtype="int")
In [12]: matriz
Out[12]:
array([[0, 0, 0],
       [0, 0, 0]])
In [13]: matriz[0][1] = 1
In [14]: matriz
Out[14]:
array([[0, 1, 0],
       [0, 0, 0]])

Saludos,

-- 
>0,0<   Francesc Altet     http://www.carabos.com/
V   V   Cárabos Coop. V.   Enjoy Data
 "-"


Más información sobre la lista de distribución Python-es