58 votos

Cómo declarar la matriz de ceros en python (o una matriz de un cierto tamaño)

Estoy tratando de construir un histograma de la cuenta... así que crear cubos. Yo sé que yo pudiera ir a través de y añadir un montón de ceros yo.e algo a lo largo de estas líneas:

buckets = [];
for i in xrange(0,100):
    buckets.append(0);

hay una forma más elegante de hacerlo? Me siento como que debería haber una forma para declarar una matriz de un tamaño determinado.

Sé numpy ha numpy.ceros, pero quiero que la solución más general

160voto

dan04 Puntos 33306
buckets = [0] * 100

46voto

OK. Puntos 755

Sólo para la integridad: Para declarar una multidimensionales lista de ceros en python tienes que usar una comprensión de lista como esta:

buckets = [[0 for col in range(5)] for row in range(10)]

para evitar referencia compartir entre las filas.

Esto se ve más torpe que chester1000 del código, pero es esencial si los valores que se supone debe ser cambiado posteriormente. Ver el Python de preguntas frecuentes para obtener más detalles.

13voto

chester1000 Puntos 591

Como este es el primer resultado en Google y aquí en algunas búsquedas, me gustaría incluir misma declaración, pero para la matriz multidimensional:

buckets = [ [0] * 100 ] * 100 # DOES NOT WORK!

es un 100x100 de la matriz de lleno a cero

EDIT + ADVERTENCIA

Vistazo a los comentarios de primera! Este método NO funciona correctamente! Sólo los duplicados referencia a la misma lista. Por lo tanto, usted terminará para arriba con UNA lista única y 100 referencias. NO LO USE!

En su lugar utilizar:

bucket = [None] * 100
for i in range(100):
    bucket[i] = [None] * 100

O

w, h = 100, 100
bucket = [[None] * w for i in range(h)]

Ambos de ellos es la salida adecuada vacío multidimensional lista de cubo 100x100

12voto

mjhm Puntos 6418

Usted puede multiplicarse list por un entero n a repetir la list n veces:

buckets = [0] * 100

7voto

fabrizioM Puntos 11498

el uso de numpy

import numpy
zarray = numpy.zeros(100)

Y, a continuación, utilizar el Histograma de la función de la biblioteca

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X