una recorrer operaciones matriz matrices listas imprimir guardar datos crear con como python arrays initialization

recorrer - Cómo inicializar un objeto entero array.array con ceros en Python



operaciones con matrices en python (0)

Las preguntas con títulos similares son sobre listas de Python o NumPy. Se trata de la parte de la clase array.array de la biblioteca estándar de Python, consulte https://docs.python.org/2/library/array.html

El enfoque de ayuno que se me ocurrió (para tipos enteros) es usar array.fromfile con / dev / zero. Esto es

  • aproximadamente 27 veces más rápido que array.array (tamaño ''L'', [0] *), que requiere temporalmente más del doble de memoria que para la matriz final,
  • aproximadamente 4.7 veces más rápido que arrar.array (''L'', [0]) * tamaño
  • y más de 200 veces más rápido que usar un objeto iterable personalizado (para evitar la creación de una gran lista temporal).

Sin embargo, / dev / zero puede no estar disponible en algunas plataformas. ¿Hay una mejor manera de hacerlo sin NumPy, módulos no estándar o mi propia extensión c?

Código de la demostración

import array import sys import time size = 100 * 1000**2 test = sys.argv[1] class ZeroIterable: def __init__(self, size): self.size = size self.next_index = 0 def next(self): if self.next_index == self.size: raise StopIteration self.next_index = self.next_index + 1 return 0 def __iter__(self): return self t = time.time() if test == ''Z'': myarray = array.array(''L'') f = open(''/dev/zero'', ''rb'') myarray.fromfile(f, size) f.close() elif test == ''L'': myarray = array.array(''L'', [0] * size) elif test == ''S'': myarray = array.array(''L'', [0]) * size elif test == ''I'': myarray = array.array(''L'', ZeroIterable(size)) print time.time() - t