zeros functions arange python numpy

functions - python.array versus numpy.array



numpy python 3.6 windows (2)

Pequeño arranque en beneficio de quien pueda encontrarlo útil (siguiendo la excelente respuesta de @dF.):

import numpy as np from array import array # Fixed size numpy array def np_fixed(n): q = np.empty(n) for i in range(n): q[i] = i return q # Resize with np.resize def np_class_resize(isize, n): q = np.empty(isize) for i in range(n): if i>=q.shape[0]: q = np.resize(q, q.shape[0]*2) q[i] = i return q # Resize with the numpy.array method def np_method_resize(isize, n): q = np.empty(isize) for i in range(n): if i>=q.shape[0]: q.resize(q.shape[0]*2) q[i] = i return q # Array.array append def arr(n): q = array(''d'') for i in range(n): q.append(i) return q isize = 1000 n = 10000000

La salida da:

%timeit -r 10 a = np_fixed(n) %timeit -r 10 a = np_class_resize(isize, n) %timeit -r 10 a = np_method_resize(isize, n) %timeit -r 10 a = arr(n) 1 loop, best of 10: 868 ms per loop 1 loop, best of 10: 2.03 s per loop 1 loop, best of 10: 2.02 s per loop 1 loop, best of 10: 1.89 s per loop

Parece que array.array es un poco más rápido y la ''api'' te ahorra algunas molestias, pero si necesitas algo más que almacenar dobles, numpy.resize no es una mala elección después de todo (si se usa correctamente).

Si está creando una matriz de 1d en Python, ¿hay algún beneficio al usar el paquete NumPy?


Todo depende de lo que planeas hacer con la matriz. Si todo lo que hace es crear matrices de tipos de datos simples y hacer E / S, el módulo de array perfectamente.

Si, por otro lado, desea hacer cualquier tipo de cálculos numéricos, el módulo de matriz no proporciona ninguna ayuda con eso. NumPy (y SciPy ) le ofrecen una amplia variedad de operaciones entre arreglos y funciones especiales que son útiles no solo para trabajos científicos, sino también para la manipulación avanzada de imágenes o, en general, para realizar cálculos eficientes con grandes cantidades de datos.

Numpy también es mucho más flexible, por ejemplo, admite matrices de cualquier tipo de objetos de Python, y también puede interactuar "de forma nativa" con sus propios objetos si se ajustan a la interfaz de la matriz .