Ir al contenido principal

Instalar Numpy (Python)

Numpy y la clase array

Un array es un conjunto de valores con el mismo tipo, esto es, todos sus elementos son enteros, reales en doble precisión, complejos en simple precisión...
Python ya dispone de un tipo array que sirve para almacenar elementos de igual tipo pero no proporciona toda la artillería matemática necesaria como para hacer operaciones de manera rápida y eficiente. De este modo, siempre que nos refiramos a la clase array siempre nos referiremos a la que viene con el módulo numpy
Si consultamos la documentación de numpy nos cuenta lo siguiente:
Numpy proporciona:


  1. Un objeto tipo array para datos homogéneos de tipo arbitrario
  2. Operaciones matemáticas rápidas para dichos arrays
  3. Rutinas para álgebra lineal, transformadas de Fourier y generación de números pseudoaleatorios.
Es, en sentido estricto, una parte mínima que permite convertir Python en un lenguaje apto para Cálculo Numérico.

Instalar numpy

Desde el punto de vista de la instalación, numpy no es distinto de cualquier otro módulo de Python. El tipo de instalación cambia bastante en función del sistema operativo que estemos utilizando. En Linux es recomendable instalar la versión disponible para la distribución correspondiente. Hay también instaladores para Windows y Mac.
Quizás lo más adecuado es instalar alguna versión empaquetada de Python que incluya todas las librerías relacionadas con cálculo científico como puede ser EPD (Enthought Python Distribution) o PythonX,Y.

Importar numpy

No es demasiado recomendable hacer un from numpy import *. Esto importaría una cantidad bastante considerable de funciones y clases y, si estamos trabajando con algún otro módulo relacionado con cálculo numérico, es muy probable que estemos provocando un conflicto de nombres. En prácticamente toda la literatura sobre numpy se importa como:
>>> import numpy as np
O lo que es lo mismo, importar todo numpy dentro del namespace np. Esto no es más que una abreviatura de simplemente hacer
>>> import numpy
Los recortes de código de estos apuntes bien usarán el prefijo numpy o el np, sin un control especialmente estricto. Simplemente hay que tener en cuenta que los dos nombres son equivalentes.

La clase array

La clase array será, a partir de este momento, la herramienta básica para los recortes, los ejercicios y los ejemplos. No podemos hacer numérico en Python sin array.
Para crear un array con determinados valores lo más normal es generarlo a partir de una lista.
>>> a = np.array([[1,2],[3,4]],dtype='double')
>>> print a
[[ 1.  2.]
 [ 3.  4.]]
Acabamos de crear un array de 2 filas y 2 columnas de reales de doble precisión. Aunque la lista de listas que hemos utilizado para crear el array contuviera sólo números enteros (no hemos puesto ningún punto después de cada uno de los números) el argumento dtype sirve para especificar la precisión.
En el siguiente ejemplo crearemos un array vacío de números en coma flotante de simple precisión con la función empty()
>>> b = np.empty([5,5],dtype=np.float32)
>>> print b
[[ -1.32853384e-05   1.45904930e-33   1.55866143e-33   1.55876722e-33
    1.32851727e-33]
 [  1.55863498e-33   1.72551991e-33   1.55871433e-33   1.72653965e-33
    1.55875400e-33]
 [  1.72652496e-33   1.55870110e-33   1.33484143e-33   1.72555224e-33
    1.72649557e-33]
 [  1.33462396e-33   1.72646619e-33   1.47818708e-33   1.50808284e-33
    1.27814146e-33]
 [  1.31751905e-33  -1.13159913e-05   1.47921638e-33   1.80231790e-33
    1.31749995e-33]]
Acabamos de crear un array vacío, esto significa que lo que hemos obtenido son 25 números ordenados en 5 filas y 5 columnas de lo que hubiera en ese preciso instante en la memoria, aunque el resultado de esto no tenga sentido.
La función empty() es la manera más eficiente de alocatear memoria, aunque ya sabemos que alocatear no es necesario en Python. Si queremos generar un array y además inicializarlo con algo que tenga sentido podemos utilizar la función :func:zeros
>>> b = np.zeros([5,5],dtype=np.float32)
>>> print b
[[ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]]

Indexación

n-dimensionalidad

Matlab

Es innegable que una de las inspiraciones de numpy es Matlab. La idea es intentar aprovechar todo lo bueno y corregir lo que no tiene sentido o está mal diseñado.
Uno de los grandes méritos de Matlab es el disponer de tal cantidad de funciones para generar y manipular arrays que ha llegado a cambiar el lenguaje en el que se comunican muchos científicos e ingenieros. Uno incluso puede oír por ahí un linspace o un meshgrid. Como el afán de Python es el de no reinventar la rueda podemos encontrar estas mismas funciones con ese mismo nombre en numpy

La clase matrix

Ya hemos visto que la clase array es más parecida a los arrays que encontramos en C o en Fortran que a las miatrices de Matlab; todas las operaciones aritméticas se ejecutan elemento a elemento.
Esto puede ser un inconveniente si nuestro cerebro ha enfermado por culpa de Matlab y cada vez que vemos una multiplicación entre dos arrays pensamos en la multiplicación matricial. La solución es utilizar la clase matrix en vez de la clase array, teniendo en cuenta que sólo es útil en el caso bidimensional. Esta clase cambia los métodos correspondientes a la multiplicación y la potencia para que sea su equivalente matricial, y no el escalar.
Podemos generar una matriz a partir de un array utilizando el método asmatrix()

Comentarios

Entradas populares de este blog

Como descargar e instalar Fuentes en tu PC

Los  distintos tipos de letras nos permiten generar trabajos impresos de mejor calidad.  De allí la importancia de poseer en nuestra computadora de un gran número de fuentes entre las cuales elegir. Tanto los   profesionales del diseño gráfico   como todos aquellos que solemos utilizar nuestra computadora para realizar trabajos impresos, conocemos la importancia de disponer de un importante número de fuentes. 

(Blogger) Corazones que sube por el blog

Cupido ya está a la vuelta de la esquina y ahora no es el amor el que está en el aire sino los corazones, muchos corazones. Giffy.me  nos ofrece estos dos scripts que harán que tu blog se inhunde de romanticismo al mostrar muchos  corazones subiendo como globos por el blog . Son dos diseños, el primero son corazones color rosa de un tamaño mediano, el segundo son corazones pequeños en color rojo; en ambos casos los corazones subirán por la página moviéndose de un lado al otro.

C# - Jerarquia de Operaciones - .NET

El problema de no tomar en cuenta la jerarquía de los operadores al plantear y resolver una operación casi siempre conduce a resultados muchas veces equivocados como estos: