SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
NumPy
.
.
. .
2 / 34
.
NumPy / SciPy
.
¿Qué es NumPy?
I Es una biblioteca de Python para trabajar con arreglos
multidimensionales.
I El principal tipo de dato es el arreglo o array
I También nos permite trabajar con la semántica de matrices
I Nos ofrece muchas funciones útiles para el procesamiento de números
.
.
. .
3 / 34
.
NumPy / SciPy
.
Disclaimer
I Pueden ver toda la info de esta presentación en
http://www.scipy.org/Tentative_NumPy_Tutorial
I Los ejemplos suponen que primero se hizo en el intérprete:
>>> from numpy import *
.
.
. .
4 / 34
.
NumPy / SciPy
.
El Array
I Es una tabla de elementos
I normalmente números
I todos del mismo tipo
I indexados por enteros
I Ejemplo de arreglos multidimensionales
I Vectores
I Matrices
I Imágenes
I Planillas
I ¿Multidimensionales?
I Que tiene muchas dimensiones o ejes
I Un poco ambiguo, mejor usar ejes
I Rango: cantidad de ejes
.
.
. .
5 / 34
.
NumPy / SciPy
.
Propiedades del Array
I Como tipo de dato se llama ndarray
I ndarray.ndim: cantidad de ejes
I ndarray.shape: una tupla indicando el tamaño del array en cada eje
I ndarray.size: la cantidad de elementos en el array
I ndarray.dtype: el tipo de elemento que el array contiene
I ndarray.itemsize: el tamaño de cada elemento en el array
.
.
. .
6 / 34
.
NumPy / SciPy
.
Propiedades del Array
>>> a = arange(10).reshape(2,5)
>>> a
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>> a.shape
(2, 5)
>>> a.ndim
2
>>> a.size
10
>>> a.dtype
dtype('int32')
>>> a.itemsize
4
.
.
. .
7 / 34
.
NumPy / SciPy
.
Creando Arrays
I Tomando un iterable como origen
>>> array( [2,3,4] )
array([2, 3, 4])
>>> array( [ (1.5,2,3), (4,5,6) ] )
array([[ 1.5, 2. , 3. ],
[ 4. , 5. , 6. ]])
.
.
. .
8 / 34
.
NumPy / SciPy
.
Creando Arrays
I Con funciones específicas en función del contenido
>>> arange(5)
array([0, 1, 2, 3, 4])
>>> zeros((2, 3))
array([[ 0., 0., 0.],
[ 0., 0., 0.]])
>>> ones((3, 2), dtype=int)
array([[1, 1],
[1, 1],
[1, 1]])
>>> empty((2, 2))
array([[ 9.43647120e -268, 7.41399396e -269],
[ 1.08290285e -312, NaN]])
>>> linspace(-pi, pi, 5)
array([-3.141592, -1.570796, 0. , 1.570796, 3.141592])
.
.
. .
9 / 34
.
NumPy / SciPy
.
Manejando los ejes
>>> a = arange(6)
>>> a
array([0, 1, 2, 3, 4, 5])
>>> a.shape = (2, 3)
>>> a
array([[0, 1, 2],
[3, 4, 5]])
>>> a.shape = (3, 2)
>>> a
array([[0, 1],
[2, 3],
[4, 5]])
>>> a.size
6
.
.
. .
10 / 34
.
NumPy / SciPy
.
Operaciones básicas
I Los operadores aritméticos se aplican por elemento
>>> a = arange(20, 60, 10)
>>> a
array([20, 30, 40, 50])
>>> a + 1
array([21, 31, 41, 51])
>>> a * 2
array([ 40, 60, 80, 100])
I Si es inplace, no se crea otro array
>>> a
array([20, 30, 40, 50])
>>> a /= 2
>>> a
array([10, 15, 20, 25])
.
.
. .
11 / 34
.
NumPy / SciPy
.
Operaciones básicas
I Podemos realizar comparaciones
>>> a = arange(5)
>>> a >= 3
array([False, False, False, True, True], dtype=bool)
>>> a % 2 == 0
array([ True, False, True, False, True], dtype=bool)
I También con otros arrays
>>> b = arange(4)
>>> b
array([0, 1, 2, 3])
>>> a - b
array([20, 29, 38, 47])
>>> a * b
array([ 0, 30, 80, 150])
.
.
. .
12 / 34
.
NumPy / SciPy
.
Operaciones básicas
I Tenemos algunos métodos con cálculos típicos
>>> c
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> c.min(), c.max()
(0, 9)
>>> c.mean()
4.5
>>> c.sum()
45
>>> c.cumsum()
array([ 0, 1, 3, 6, 10, 15, 21, 28, 36, 45])
I Hay muchas funciones que nos dan info del array
I all, alltrue, any, argmax, argmin, argsort, average, bincount, ceil, clip,
conj, conjugate, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor,
inner, inv, lexsort, max, maximum, mean, median, min, minimum,
nonzero, outer, prod, re, round, sometrue, sort, std, sum, trace,
transpose, var, vdot, vectorize, where
.
.
. .
13 / 34
.
NumPy / SciPy
.
Trabajando con los elementos
I La misma sintaxis de Python
>>> a = arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a[2]
2
>>> a[2:5]
array([2, 3, 4])
>>>
>>> a[1] = 88
>>> a[-5:] = 100
>>> a
array([ 0, 88, 2, 3, 4, 100, 100, 100, 100, 100])
.
.
. .
14 / 34
.
NumPy / SciPy
.
Trabajando con los elementos
I Pero también podemos trabajar por eje
>>> a = arange(8).reshape((2,4))
>>> a
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
>>> a[:,1]
array([1, 5])
>>> a[0,-2:]
array([2, 3])
.
.
. .
15 / 34
.
NumPy / SciPy
.
Cambiando la forma del array
I Podemos usar .shape directamente
>>> a = arange(8)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> a.shape = (2,4)
>>> a
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
I Usando .shape con comodín
>>> a.shape = (4,-1)
>>> a
array([[0, 1],
[2, 3],
[4, 5],
[6, 7]])
>>> a.shape
(4, 2)
.
.
. .
16 / 34
.
NumPy / SciPy
.
Cambiando la forma del array
I Transponer y aplanar
>>> a
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
>>> a.transpose()
array([[0, 4],
[1, 5],
[2, 6],
[3, 7]])
>>> a.ravel()
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> a
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
.
.
. .
17 / 34
.
NumPy / SciPy
.
Juntando y separando arrays
I Tenemos vstack y hstack
>>> a = ones((2,5)); b = arange(5)
>>> a
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]])
>>> b
array([0, 1, 2, 3, 4])
>>> juntos = vstack((a,b))
>>> juntos
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 0., 1., 2., 3., 4.]])
.
.
. .
18 / 34
.
NumPy / SciPy
.
Juntando y separando arrays
I También hsplit y vsplit
>>> hsplit(juntos, (1,3))
[array([[ 1.],
[ 1.],
[ 0.]]),
array([[ 1., 1.],
[ 1., 1.],
[ 1., 2.]]),
array([[ 1., 1.],
[ 1., 1.],
[ 3., 4.]])]
.
.
. .
19 / 34
.
NumPy / SciPy
.
Indexado avanzado
I Podemos indizar con otros arrays
>>> a = arange(10) ** 2
>>> i = array([ (2,3), (6,7) ])
>>> a
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81])
>>> a[i]
array([[ 4, 9],
[36, 49]])
I O elegir elementos
>>> a = arange(5)
>>> b = a % 2 == 0
>>> a
array([0, 1, 2, 3, 4])
>>> b
array([ True, False, True, False, True], dtype=bool)
>>> a[b]
array([0, 2, 4])
.
.
. .
20 / 34
.
NumPy / SciPy
.
Matrices
I Es un caso específico del array
>>> a
array([[0, 1, 2],
[3, 4, 5]])
>>> A = matrix(a)
>>> A
matrix([[0, 1, 2],
[3, 4, 5]])
>>> A.T
matrix([[0, 3],
[1, 4],
[2, 5]])
>>> A.I
matrix([[-0.77777778 , 0.27777778],
[-0.11111111 , 0.11111111],
[ 0.55555556 , -0.05555556]])
.
.
. .
21 / 34
.
NumPy / SciPy
.
Matrices
I Se comportan, obviamente, como matrices
>>> A
matrix([[0, 1, 2],
[3, 4, 5]])
>>> M
matrix([[2, 3],
[4, 5],
[6, 7]])
>>> A * M
matrix([[16, 19],
[52, 64]])
.
.
. .
22 / 34
.
NumPy / SciPy
.
Polinomios
>>> p = poly1d([2, 3, 4])
>>> print p
2
2 x + 3 x + 4
>>> print p*p
4 3 2
4 x + 12 x + 25 x + 24 x + 16
>>> print p.deriv()
4 x + 3
>>> print p.integ(k=2)
3 2
0.6667 x + 1.5 x + 4 x + 2
>>> p(range(5))
array([ 4, 9, 18, 31, 48])
.
.
. .
23 / 34
.
NumPy / SciPy
.
SciPy
.
.
. .
24 / 34
.
NumPy / SciPy
.
Intro
I Colección de algoritmos matemáticos y funciones
I Construido sobre NumPy
I Poder al intérprete interactivo
I Procesamiento de datos y prototipado de sistemas
I Compite con Matlab, IDL, Octave, R-Lab, y SciLab
.
.
. .
25 / 34
.
NumPy / SciPy
.
Disclaimer
I Pueden ver toda la info de esta presentación en
http://docs.scipy.org/doc/
I ¿Les conté que me recibí de ingeniero hace más de 9 años?
.
.
. .
26 / 34
.
NumPy / SciPy
.
Funciones y funciones!
I De todo tipo!
I airy
I elliptic
I bessel
I gamma
I beta
I hypergeometric
I parabolic cylinder
I mathieu
I spheroidal wave
I struve
I kelvin
.
.
. .
27 / 34
.
NumPy / SciPy
.
Integration
I General integration
I Gaussian quadrature
I Integrating using samples
I Ordinary differential equations
.
.
. .
28 / 34
.
NumPy / SciPy
.
Optimization
I Nelder-Mead Simplex algorithm
I Broyden-Fletcher-Goldfarb-Shanno algorithm
I Newton-Conjugate-Gradient
I Least-square fitting
I Scalar function minimizers
I Root finding
>>> f = poly1d([1, 4, 8])
>>> print f
2
1 x + 4 x + 8
>>> roots(f)
array([-2.+2.j, -2.-2.j])
>>> f(-2.+2.j)
0j
.
.
. .
29 / 34
.
NumPy / SciPy
.
Interpolation
I Linear 1-d interpolation
I Spline interpolation in 1-d
I Two-dimensional spline representation
.
.
. .
30 / 34
.
NumPy / SciPy
.
Signal Processing
I B-splines
I second- and third-order cubic spline coefficients
I from equally spaced samples in one- and two-dimensions
I Filtering
I Convolution/Correlation
I Difference-equation filtering
I Other filters: Median, Order, Wiener, Hilbert, ...
.
.
. .
31 / 34
.
NumPy / SciPy
.
Algebra lineal
I Matrices
I Inversas
I Determinantes
I Resolución de sistemas lineales
I Descomposiciones
I Eigenvalues and eigenvectors
I Singular value, LU, Cholesky, QR, Schur
I Funciones de matrices
I Exponentes y logaritmos
I Trigonometría (común e hiperbólica)
.
.
. .
32 / 34
.
NumPy / SciPy
.
Estadísticas
I Masked statistics functions
I 64!
I Continuous distributions
I 81!
I Discrete distributions
I 12!
I Statistical functions
I 72!
.
.
. .
33 / 34
.
NumPy / SciPy
.
¡Muchas gracias!
¿Preguntas?
¿Sugerencias?
Facundo Batista
facundo@taniquetil.com.ar
http://www.taniquetil.com.ar
Licencia: Creative Commons
Atribución-NoComercial-CompartirDerivadasIgual 2.5 Argentina
http://creativecommons.org/licenses/by-nc-sa/2.5/deed.es_AR
.
.
. .
34 / 34
.
NumPy / SciPy
.

Más contenido relacionado

Similar a numsci.pdf

Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkSoftware Guru
 
Uso de los mutex y mas
Uso de los mutex y masUso de los mutex y mas
Uso de los mutex y masWhaleejaa Wha
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busquedaOsirysRock
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamientoIINTERACTIVE
 
Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))kikocorreoso
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Andres Garcia Garcia
 
Clase 9- programacion
Clase 9- programacionClase 9- programacion
Clase 9- programaciondiego MC
 
ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++die_dex
 
Curso de Nivelación de Algoritmos - Clase 4
Curso de Nivelación de Algoritmos - Clase 4Curso de Nivelación de Algoritmos - Clase 4
Curso de Nivelación de Algoritmos - Clase 4Ernesto Mislej
 

Similar a numsci.pdf (20)

Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache Spark
 
Arreglos java
Arreglos javaArreglos java
Arreglos java
 
Uso de los mutex y mas
Uso de los mutex y masUso de los mutex y mas
Uso de los mutex y mas
 
12637788.ppt
12637788.ppt12637788.ppt
12637788.ppt
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Mètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsquedaMètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsqueda
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamiento
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamiento
 
Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
 
Tema6
Tema6Tema6
Tema6
 
Informatica
InformaticaInformatica
Informatica
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10
 
Clase 9- programacion
Clase 9- programacionClase 9- programacion
Clase 9- programacion
 
ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++
 
Arreglos
ArreglosArreglos
Arreglos
 
Curso de Nivelación de Algoritmos - Clase 4
Curso de Nivelación de Algoritmos - Clase 4Curso de Nivelación de Algoritmos - Clase 4
Curso de Nivelación de Algoritmos - Clase 4
 
Mathscript
MathscriptMathscript
Mathscript
 
Tipos basicos
Tipos basicosTipos basicos
Tipos basicos
 
Arreglos en C++
Arreglos en C++Arreglos en C++
Arreglos en C++
 

Último

12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señorkkte210207
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucioneschorantina325
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digitalNayaniJulietaRamosRa
 

Último (6)

12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disoluciones
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digital
 

numsci.pdf

  • 1.
  • 2. NumPy . . . . 2 / 34 . NumPy / SciPy .
  • 3. ¿Qué es NumPy? I Es una biblioteca de Python para trabajar con arreglos multidimensionales. I El principal tipo de dato es el arreglo o array I También nos permite trabajar con la semántica de matrices I Nos ofrece muchas funciones útiles para el procesamiento de números . . . . 3 / 34 . NumPy / SciPy .
  • 4. Disclaimer I Pueden ver toda la info de esta presentación en http://www.scipy.org/Tentative_NumPy_Tutorial I Los ejemplos suponen que primero se hizo en el intérprete: >>> from numpy import * . . . . 4 / 34 . NumPy / SciPy .
  • 5. El Array I Es una tabla de elementos I normalmente números I todos del mismo tipo I indexados por enteros I Ejemplo de arreglos multidimensionales I Vectores I Matrices I Imágenes I Planillas I ¿Multidimensionales? I Que tiene muchas dimensiones o ejes I Un poco ambiguo, mejor usar ejes I Rango: cantidad de ejes . . . . 5 / 34 . NumPy / SciPy .
  • 6. Propiedades del Array I Como tipo de dato se llama ndarray I ndarray.ndim: cantidad de ejes I ndarray.shape: una tupla indicando el tamaño del array en cada eje I ndarray.size: la cantidad de elementos en el array I ndarray.dtype: el tipo de elemento que el array contiene I ndarray.itemsize: el tamaño de cada elemento en el array . . . . 6 / 34 . NumPy / SciPy .
  • 7. Propiedades del Array >>> a = arange(10).reshape(2,5) >>> a array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) >>> a.shape (2, 5) >>> a.ndim 2 >>> a.size 10 >>> a.dtype dtype('int32') >>> a.itemsize 4 . . . . 7 / 34 . NumPy / SciPy .
  • 8. Creando Arrays I Tomando un iterable como origen >>> array( [2,3,4] ) array([2, 3, 4]) >>> array( [ (1.5,2,3), (4,5,6) ] ) array([[ 1.5, 2. , 3. ], [ 4. , 5. , 6. ]]) . . . . 8 / 34 . NumPy / SciPy .
  • 9. Creando Arrays I Con funciones específicas en función del contenido >>> arange(5) array([0, 1, 2, 3, 4]) >>> zeros((2, 3)) array([[ 0., 0., 0.], [ 0., 0., 0.]]) >>> ones((3, 2), dtype=int) array([[1, 1], [1, 1], [1, 1]]) >>> empty((2, 2)) array([[ 9.43647120e -268, 7.41399396e -269], [ 1.08290285e -312, NaN]]) >>> linspace(-pi, pi, 5) array([-3.141592, -1.570796, 0. , 1.570796, 3.141592]) . . . . 9 / 34 . NumPy / SciPy .
  • 10. Manejando los ejes >>> a = arange(6) >>> a array([0, 1, 2, 3, 4, 5]) >>> a.shape = (2, 3) >>> a array([[0, 1, 2], [3, 4, 5]]) >>> a.shape = (3, 2) >>> a array([[0, 1], [2, 3], [4, 5]]) >>> a.size 6 . . . . 10 / 34 . NumPy / SciPy .
  • 11. Operaciones básicas I Los operadores aritméticos se aplican por elemento >>> a = arange(20, 60, 10) >>> a array([20, 30, 40, 50]) >>> a + 1 array([21, 31, 41, 51]) >>> a * 2 array([ 40, 60, 80, 100]) I Si es inplace, no se crea otro array >>> a array([20, 30, 40, 50]) >>> a /= 2 >>> a array([10, 15, 20, 25]) . . . . 11 / 34 . NumPy / SciPy .
  • 12. Operaciones básicas I Podemos realizar comparaciones >>> a = arange(5) >>> a >= 3 array([False, False, False, True, True], dtype=bool) >>> a % 2 == 0 array([ True, False, True, False, True], dtype=bool) I También con otros arrays >>> b = arange(4) >>> b array([0, 1, 2, 3]) >>> a - b array([20, 29, 38, 47]) >>> a * b array([ 0, 30, 80, 150]) . . . . 12 / 34 . NumPy / SciPy .
  • 13. Operaciones básicas I Tenemos algunos métodos con cálculos típicos >>> c array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> c.min(), c.max() (0, 9) >>> c.mean() 4.5 >>> c.sum() 45 >>> c.cumsum() array([ 0, 1, 3, 6, 10, 15, 21, 28, 36, 45]) I Hay muchas funciones que nos dan info del array I all, alltrue, any, argmax, argmin, argsort, average, bincount, ceil, clip, conj, conjugate, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, inv, lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sometrue, sort, std, sum, trace, transpose, var, vdot, vectorize, where . . . . 13 / 34 . NumPy / SciPy .
  • 14. Trabajando con los elementos I La misma sintaxis de Python >>> a = arange(10) >>> a array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> a[2] 2 >>> a[2:5] array([2, 3, 4]) >>> >>> a[1] = 88 >>> a[-5:] = 100 >>> a array([ 0, 88, 2, 3, 4, 100, 100, 100, 100, 100]) . . . . 14 / 34 . NumPy / SciPy .
  • 15. Trabajando con los elementos I Pero también podemos trabajar por eje >>> a = arange(8).reshape((2,4)) >>> a array([[0, 1, 2, 3], [4, 5, 6, 7]]) >>> a[:,1] array([1, 5]) >>> a[0,-2:] array([2, 3]) . . . . 15 / 34 . NumPy / SciPy .
  • 16. Cambiando la forma del array I Podemos usar .shape directamente >>> a = arange(8) >>> a array([0, 1, 2, 3, 4, 5, 6, 7]) >>> a.shape = (2,4) >>> a array([[0, 1, 2, 3], [4, 5, 6, 7]]) I Usando .shape con comodín >>> a.shape = (4,-1) >>> a array([[0, 1], [2, 3], [4, 5], [6, 7]]) >>> a.shape (4, 2) . . . . 16 / 34 . NumPy / SciPy .
  • 17. Cambiando la forma del array I Transponer y aplanar >>> a array([[0, 1, 2, 3], [4, 5, 6, 7]]) >>> a.transpose() array([[0, 4], [1, 5], [2, 6], [3, 7]]) >>> a.ravel() array([0, 1, 2, 3, 4, 5, 6, 7]) >>> a array([[0, 1, 2, 3], [4, 5, 6, 7]]) . . . . 17 / 34 . NumPy / SciPy .
  • 18. Juntando y separando arrays I Tenemos vstack y hstack >>> a = ones((2,5)); b = arange(5) >>> a array([[ 1., 1., 1., 1., 1.], [ 1., 1., 1., 1., 1.]]) >>> b array([0, 1, 2, 3, 4]) >>> juntos = vstack((a,b)) >>> juntos array([[ 1., 1., 1., 1., 1.], [ 1., 1., 1., 1., 1.], [ 0., 1., 2., 3., 4.]]) . . . . 18 / 34 . NumPy / SciPy .
  • 19. Juntando y separando arrays I También hsplit y vsplit >>> hsplit(juntos, (1,3)) [array([[ 1.], [ 1.], [ 0.]]), array([[ 1., 1.], [ 1., 1.], [ 1., 2.]]), array([[ 1., 1.], [ 1., 1.], [ 3., 4.]])] . . . . 19 / 34 . NumPy / SciPy .
  • 20. Indexado avanzado I Podemos indizar con otros arrays >>> a = arange(10) ** 2 >>> i = array([ (2,3), (6,7) ]) >>> a array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81]) >>> a[i] array([[ 4, 9], [36, 49]]) I O elegir elementos >>> a = arange(5) >>> b = a % 2 == 0 >>> a array([0, 1, 2, 3, 4]) >>> b array([ True, False, True, False, True], dtype=bool) >>> a[b] array([0, 2, 4]) . . . . 20 / 34 . NumPy / SciPy .
  • 21. Matrices I Es un caso específico del array >>> a array([[0, 1, 2], [3, 4, 5]]) >>> A = matrix(a) >>> A matrix([[0, 1, 2], [3, 4, 5]]) >>> A.T matrix([[0, 3], [1, 4], [2, 5]]) >>> A.I matrix([[-0.77777778 , 0.27777778], [-0.11111111 , 0.11111111], [ 0.55555556 , -0.05555556]]) . . . . 21 / 34 . NumPy / SciPy .
  • 22. Matrices I Se comportan, obviamente, como matrices >>> A matrix([[0, 1, 2], [3, 4, 5]]) >>> M matrix([[2, 3], [4, 5], [6, 7]]) >>> A * M matrix([[16, 19], [52, 64]]) . . . . 22 / 34 . NumPy / SciPy .
  • 23. Polinomios >>> p = poly1d([2, 3, 4]) >>> print p 2 2 x + 3 x + 4 >>> print p*p 4 3 2 4 x + 12 x + 25 x + 24 x + 16 >>> print p.deriv() 4 x + 3 >>> print p.integ(k=2) 3 2 0.6667 x + 1.5 x + 4 x + 2 >>> p(range(5)) array([ 4, 9, 18, 31, 48]) . . . . 23 / 34 . NumPy / SciPy .
  • 24. SciPy . . . . 24 / 34 . NumPy / SciPy .
  • 25. Intro I Colección de algoritmos matemáticos y funciones I Construido sobre NumPy I Poder al intérprete interactivo I Procesamiento de datos y prototipado de sistemas I Compite con Matlab, IDL, Octave, R-Lab, y SciLab . . . . 25 / 34 . NumPy / SciPy .
  • 26. Disclaimer I Pueden ver toda la info de esta presentación en http://docs.scipy.org/doc/ I ¿Les conté que me recibí de ingeniero hace más de 9 años? . . . . 26 / 34 . NumPy / SciPy .
  • 27. Funciones y funciones! I De todo tipo! I airy I elliptic I bessel I gamma I beta I hypergeometric I parabolic cylinder I mathieu I spheroidal wave I struve I kelvin . . . . 27 / 34 . NumPy / SciPy .
  • 28. Integration I General integration I Gaussian quadrature I Integrating using samples I Ordinary differential equations . . . . 28 / 34 . NumPy / SciPy .
  • 29. Optimization I Nelder-Mead Simplex algorithm I Broyden-Fletcher-Goldfarb-Shanno algorithm I Newton-Conjugate-Gradient I Least-square fitting I Scalar function minimizers I Root finding >>> f = poly1d([1, 4, 8]) >>> print f 2 1 x + 4 x + 8 >>> roots(f) array([-2.+2.j, -2.-2.j]) >>> f(-2.+2.j) 0j . . . . 29 / 34 . NumPy / SciPy .
  • 30. Interpolation I Linear 1-d interpolation I Spline interpolation in 1-d I Two-dimensional spline representation . . . . 30 / 34 . NumPy / SciPy .
  • 31. Signal Processing I B-splines I second- and third-order cubic spline coefficients I from equally spaced samples in one- and two-dimensions I Filtering I Convolution/Correlation I Difference-equation filtering I Other filters: Median, Order, Wiener, Hilbert, ... . . . . 31 / 34 . NumPy / SciPy .
  • 32. Algebra lineal I Matrices I Inversas I Determinantes I Resolución de sistemas lineales I Descomposiciones I Eigenvalues and eigenvectors I Singular value, LU, Cholesky, QR, Schur I Funciones de matrices I Exponentes y logaritmos I Trigonometría (común e hiperbólica) . . . . 32 / 34 . NumPy / SciPy .
  • 33. Estadísticas I Masked statistics functions I 64! I Continuous distributions I 81! I Discrete distributions I 12! I Statistical functions I 72! . . . . 33 / 34 . NumPy / SciPy .
  • 34. ¡Muchas gracias! ¿Preguntas? ¿Sugerencias? Facundo Batista facundo@taniquetil.com.ar http://www.taniquetil.com.ar Licencia: Creative Commons Atribución-NoComercial-CompartirDerivadasIgual 2.5 Argentina http://creativecommons.org/licenses/by-nc-sa/2.5/deed.es_AR . . . . 34 / 34 . NumPy / SciPy .