5.6 array -- Vectores eficientes de valores numéricos

Este módulo define un nuevo tipo de objeto que puede representar de forma eficiente un vector, o matriz unidimensional, de valores básicos: caracteres, enteros y números en coma flotante. Los vectores son de tipo secuencial y se comportan de manera parecida a las listas, a excepción del tipo de objetos almacenados en ellos, que está limitado. El tipo se especifica en la creación del objeto usando un código de tipo, que consta de un único carácter. Se han definido los siguientes códigos de tipo:
Type code  C Type  Minimum size in bytes 
'c' carácter 1
'b' entero con signo 1
'B' entero sin signo 1
'h' entero con signo 2
'H' entero sin signo 2
'i' entero con signo 2
'I' entero sin signo 2
'l' entero con signo 4
'L' entero sin signo 4
'f' coma flotante 4
'd' doble 8
La representación real de los valores está determinada por la arquitectura del sistema (más exactamente por la implementación de C). Se puede acceder al tamaño real a través del atributo itemsize. Los valores almacenados por los elementos 'L' y 'I' se corresponderá con enteros largos de Python cuando se recuperen, porque el tipo normal de entero en Python no puede representar completamente el rango de los enteros (largos) sin signo de C. El módulo define las siguientes funciones y tipos de objetos:
array (typecode[, initializer])
Devuelve un nuevo vector cuyos elementos están restringidos por typecode e iniciados al valor opcional initializer, que debe ser una lista o una cadena. La lista o la cadena se pasa al método fromlist() o fromstring() (ver más abajo) del nuevo vector para añadirle elementos iniciales.
ArrayType
El tipo de objeto correspondiente a los objetos devueltos por la función array().
Los objetos vector incluyen los siguientes miembros y métodos:
typecode
El carácter de código de tipo usado para crear el vector.
itemsize
La longitud en bytes de un elemento del vector en su representación interna.
append (x)
Agrega un nuevo elemento con el valor x al final del vector.
buffer_info ()
Devuelve una tupla (address, length) que contiene la dirección de memoria y la longitud en bytes del buffer usado para almacenar el contenido del vector. Esto es útil cuando se trabaja con interfaces de entrada/salida de bajo nivel (e inseguras por definición) que requieren direcciones de memoria, como ciertas operaciones ioctl(). Los números devueltos son válidos en tanto el vector exista y sufra operaciones que cambien su longitud.
byteswap ()
Realiza un ``intercambio de bytes'' entre todos los elementos de un vector. Sólo se permite en valores cuyo tamaño sea 1, 2, 4 u 8 bytes; para otros valores, se genera una excepción RuntimeError. Es útil cuando se leen datos de un fichero escrito en una máquina con diferente ordenación de bytes.
count (x)
Devuelve el número de apariciones de x en el vector.
extend (a)
Agrega elementos desde a al final del vector.
fromfile (f, n)
Lee n elementos (como valores nativos de la máquina) del objeto fichero f y los añade al final del vector. Si están disponibles menos de n elementos se genera una excepción EOFError, aunque los elementos anteriores a n se agregan al vector. El argumento f tiene que ser un objeto fichero integrado; cualquier otro no funcionará.
fromlist (list)
Añade elementos desde la lista. Es equivalente a "for x in list: a.append(x)" exceptuando que si hay un error de tipo, el vector permanece inalterado.
fromstring (s)
Añade elementos desde la cadena, interpretándola como un vector de valores nativos de la máquina (como si la cadena hubiera sido leída de un fichero usando el método fromfile()).
index (x)
Devuelve el índice de la primera aparición de x en el vector.
insert (i, x)
Inserta un nuevo elemento x en el vector antes de la posición i.
pop ([i])
Elimina el elemento con el índice i del vector y lo devuelve. El argumento opcional toma por defecto el valor -1, de manera que por defecto es eliminado y devuelto el último elemento.
read (f, n)
Obsoleto a partir de la versión 1.5.1. Úsese el método fromfile().

Lee n elementos (como valores nativos de la máquina) del objeto fichero f y los añade al final del vector. Si están disponibles menos de n elementos se genera una excepción EOFError, aunque los elementos anteriores a n se agregan al vector. El argumento f tiene que ser un objeto fichero integrado; cualquier otro no funcionará.

remove (x)
Elimina la primera aparición de x del vector.
reverse ()
Invierte el orden de los elementos del vector.
tofile (f)
Escribe todos los elementos (como valores nativos de la máquina) en el objeto fichero f.
tolist ()
Convierte el vector en una lista normal con los mismos elementos.
tostring ()
Convierte el vector en un vector de valores nativos de la máquina y devuelve la cadena resultante (la misma secuencia de bytes que serían escritos a un fichero por el método tofile().)
write (f)
Obsoleto a partir de la versión 1.5.1. Utilícese el método tofile().

Escribe todos los elementos (como valores nativos de la máquina) al objeto fichero f.

Cuando se imprime o convierte a cadena un objeto vector, se representa como array(typecode, initializer). El initializer se omite si el vector está vacío; es una cadena si typecode es 'c', en otro caso es una lista de números. Se garantiza que la cadena podrá convertirse de nuevo en un vector con el mismo tipo y valor usando comillas invertidas (``), en tanto la función array() haya sido importada usando "from array import array". Ejemplos:
array('l')
array('c', 'hola mundo')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14])

Más informació en:

Module struct:
empaquetado y desempaquetado de datos binarios heterogéneos.
Module xdrlib:
empaquetado y desempaquetado de datos XDR.

La extensión numérica de Python (NumPy) define otro tipo de vector; véase The Numerical Python Manual para información adicional (disponible en ftp://ftp-icf.llnl.gov/pub/python/numericalpython.pdf). Hay más información sobre NumPy en http://www.python.org/topics/scicomp/numpy.html.


Ver Sobre este documento... para obtener información sobre sugerencias.