







Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Parte 2 curso de python en estadistica
Tipo: Ejercicios
1 / 13
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
In [91]: import import numpynumpy In [92]: print("NumPy") print("- Una biblioteca para Python: ndarray + ufunc") print("- Los arrays multidimensionales (ndarray) nos permiten almacenar datos de manera estr ucturada") print("- Las funciones universales (ufunc) nos permiten operar con esos datos de manera efic iente") In [93]: numpy.linalg.norm In [94]: import import numpynumpy asas npnp In [95]: print("Lo que hacemos para crear un alias al parquete NumPy de nombre np.Es simplemente una forma de abreviar el codigo") print("Para encontrar ayuda sobre cierto tema podemos usar la función lookfor:") In [96]: np.lookfor("solve") NumPy
numpy.linalg.solve Solve a linear matrix equation, or system of linear scalar equations. numpy.linalg.lstsq Return the least-squares solution to a linear matrix equation. numpy.linalg.tensorsolve Solve the tensor equation a x = b
for x. numpy.nditer.close close() numpy.linalg._umath_linalg.solve solve the system a x = b, on the last two dimensions, broadcast to the rest. numpy.linalg._umath_linalg.solve solve the system a x = b, for b being a vector, broadcast in the outer dimensions. numpy.distutils.misc_util.njoin Join two or more pathname components + numpy.distutils.misc_util.minrelpath Resolve ..
and '.' from path. numpy.shares_memory Determine if two arrays share memory.
In [97]: "Constantes y funciones matemáticas" In [98]: "Además de arrays, NumPy contiene también constantes y funciones matemáticas de uso cotidian o." In [99]: np.e In [100]: np.pi In [101]: np.log( 2 ) Determine if two arrays share memory. numpy.linalg.eig Compute the eigenvalues and right eigenvectors of a square array. numpy.linalg.eigh Return the eigenvalues and eigenvectors of a complex Hermitian numpy.linalg.pinv Compute the (Moore-Penrose) pseudo-inverse of a matrix. numpy.linalg.cholesky Cholesky decomposition. numpy.linalg.tensorinv Compute the 'inverse' of an N-dimensional array. numpy.chararray.setflags Set array flags WRITEABLE, ALIGNED, (WRITEBACKIFCOPY and UPDATEIFCOPY), numpy.linalg.LinAlgError Generic Python-exception-derived object raised by linalg functions. numpy.core._internal.recursive A decorator class for recursive nested functions. numpy.polynomial.Hermite._fit Least squares fit of Hermite series to data. numpy.polynomial.HermiteE._fit Least squares fit of Hermite series to data. numpy.polynomial.Laguerre._fit Least squares fit of Laguerre series to data. numpy.polynomial.Legendre._fit Least squares fit of Legendre series to data. numpy.polynomial.Chebyshev._fit Least squares fit of Chebyshev series to data. numpy.polynomial.Polynomial._fit Least-squares fit of a polynomial to data. numpy.core._multiarray_umath.shares_memory Determine if two arrays share memory. Out[97]: 'Constantes y funciones matemáticas' Out[98]: 'Además de arrays, NumPy contiene también constantes y funciones matemáticas de uso cotidian o.' Out[99]:
Out[100]:
np.array([ 1 , 2 , 3 ], dtype=complex) In [121]: a In [122]: a.astype(int) In [123]: N, M = 100 , 100 a = np.empty( 10000 ).reshape(N, M) b = np.random.rand( 10000 ).reshape(N, M) c = np.random.rand( 10000 ).reshape(N, M) In [124]: %%timeit for for i inin range(N): for for j inin range(M): a[i, j] = b[i, j] + c[i, j] In [125]: %%timeit a = b + c In [126]: "Indexación de arrays" Out[109]: array([1.+0.j, 2.+0.j, 3.+0.j]) Out[121]: array([[1.25440582, 1.05743295, 0.22118076, ..., 0.08984442, 0.7361005 , 1.74171771], [1.12817679, 0.80280523, 1.56548433, ..., 0.59263176, 1.00688922, 0.7513823 ], [0.99345759, 1.78520795, 1.02464907, ..., 1.91325549, 1.66977725, 0.48581567], ..., [0.58309175, 1.13626478, 0.85641427, ..., 1.38586911, 0.83570349, 0.43558073], [0.14774171, 0.33047819, 1.24104184, ..., 1.46114983, 1.21350543, 1.08359491], [1.02582782, 0.6028633 , 0.94592373, ..., 0.48819559, 1.19624789, 0.51508274]]) Out[122]: array([[1, 1, 0, ..., 0, 0, 1], [1, 0, 1, ..., 0, 1, 0], [0, 1, 1, ..., 1, 1, 0], ..., [0, 1, 0, ..., 1, 0, 0], [0, 0, 1, ..., 1, 1, 1], [1, 0, 0, ..., 0, 1, 0]]) 4.8 ms ± 73.9 μs per loop (mean ± std. dev. of 7 runs, 100 loops each) 3.8 μs ± 63.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) Out[126]: 'Indexación de arrays'
In [127]: "Una de las herramientas más importantes a la hora de trabajar con arrays es el indexado. Co nsiste en seleccionar elementos aislados o secciones de un array. Nosotros vamos a ver la in dexación básica, pero existen técnicas de indexación avanzada que convierten los arrays en h erramientas potentísimas." In [128]: a = np.array([ [ 1 , 2 , 3 ], [ 4 , 5 , 6 ] ]) a In [129]: a[ 0 ] In [130]: a[ 0 , 0 ] In [131]: a[ 0 , 1 : 3 ] In [132]: a[ 0 , :: 2 ] In [133]: print("Creación de arrays") print("Muchos metodos y muy variados para la creacion de estos elementos") print("- A partir de datos existentes: array, copy ") print("- Unos y ceros: empty, eye, ones, zeros, *_like ") print("- Rangos: arange, linspace, logspace, meshgrid ") print("- Aleatorios: rand, randn ") 'Indexación de arrays' Out[127]: 'Una de las herramientas más importantes a la hora de trabajar con arrays es el indexado. Co nsiste en seleccionar elementos aislados o secciones de un array. Nosotros vamos a ver la in dexación básica, pero existen técnicas de indexación avanzada que convierten los arrays en h erramientas potentísimas.' Out[128]: array([[1, 2, 3], [4, 5, 6]]) Out[129]: array([1, 2, 3]) Out[130]: 1 Out[131]: array([2, 3]) Out[132]: array([1, 3]) Creación de arrays
i3.shape In [ ]: np.ones(i3.shape) In [139]: "Si en lugar de pasar directamente la forma del array ya sabemos que queremos crear un array con la misma forma que otro, podemos usar las funciones *_like, que reciben un array en vez de una tupla." In [140]: np.ones_like(i3) In [141]: np.linspace( 0 , 1 , num= 10 ) In [142]: np.logspace( 0 , 3 ) In [143]: "La función np.meshgrid se utiliza mucho a la hora de representar funciones en dos dimension es, y crea dos arrays: uno varía por filas y otro por columnas. Combinándolos, podemos evalu ar la función en un cuadrado." Out[139]: 'Si en lugar de pasar directamente la forma del array ya sabemos que queremos crear un array con la misma forma que otro, podemos usar las funciones *_like, que reciben un array en vez de una tupla.'
NameErrorNameError Traceback (most recent call last) <ipython-input-140-a63df8504b13><ipython-input-140-a63df8504b13> in
In [144]: x = np.linspace( 0 , 1 , num= 5 ) y = np.linspace( 0 , 1 , num= 5 ) xx, yy = np.meshgrid(x, y) In [145]: xx, yy In [146]: "Operaciones con arrays" In [147]: print("Las funciones universales (ufunc) operan sobre arrays de NumPy elemento a elemento y siguiendo las reglas de broadcasting.") print("Funciones matemáticas: sin, cos, sqrt, exp, ...") print("Operaciones lógicas: <, ~, ...") print("Funciones lógicas: all, any, isnan, allclose, ...") In [148]: xx + 1 j * yy In [149]: a = np.arange( 2 * 3 ).reshape( 2 , 3 ) a ar la función en un cuadrado.' Out[145]: (array([[0. , 0.25, 0.5 , 0.75, 1. ], [0. , 0.25, 0.5 , 0.75, 1. ], [0. , 0.25, 0.5 , 0.75, 1. ], [0. , 0.25, 0.5 , 0.75, 1. ], [0. , 0.25, 0.5 , 0.75, 1. ]]), array([[0. , 0. , 0. , 0. , 0. ], [0.25, 0.25, 0.25, 0.25, 0.25], [0.5 , 0.5 , 0.5 , 0.5 , 0.5 ], [0.75, 0.75, 0.75, 0.75, 0.75], [1. , 1. , 1. , 1. , 1. ]])) Out[146]: 'Operaciones con arrays' Las funciones universales (ufunc) operan sobre arrays de NumPy elemento a elemento y siguien do las reglas de broadcasting. Funciones matemáticas: sin, cos, sqrt, exp, ... Operaciones lógicas: <, ~, ... Funciones lógicas: all, any, isnan, allclose, ... Out[148]: array([[0. +0.j , 0.25+0.j , 0.5 +0.j , 0.75+0.j , 1. +0.j ], [0. +0.25j, 0.25+0.25j, 0.5 +0.25j, 0.75+0.25j, 1. +0.25j], [0. +0.5j , 0.25+0.5j , 0.5 +0.5j , 0.75+0.5j , 1. +0.5j ], [0. +0.75j, 0.25+0.75j, 0.5 +0.75j, 0.75+0.75j, 1. +0.75j], [0. +1.j , 0.25+1.j , 0.5 +1.j , 0.75+1.j , 1. +1.j ]]) Out[149]: array([[0, 1, 2], [3, 4, 5]])
In [158]: a = np.arange( 6 ).astype(float) b = np.ones( 6 ) a, b In [159]: np.isclose(a, b, rtol=1e-6) In [160]: np.allclose(a, b, rtol=1e-6) In [161]: 0.1 + 0.2 + 0. In [162]: 0.3 + 0.2 + 0. In [163]: 0.1 + 0.2 + 0.3 == 0.3 + 0.2 + 0. In [164]: "Ejercicios" In [165]: print("Ejercicio 1.") print("1. Crear un array z1 3x4 lleno de ceros de tipo entero.") print("2. Crear un array z2 3x4 lleno de ceros salvo la primera fila que serán todo unos.") print("3. Crear un array z3 3x4 lleno de ceros salvo la última fila que será el rango entre 5 y 8.") Out[157]: False Out[158]: (array([0., 1., 2., 3., 4., 5.]), array([1., 1., 1., 1., 1., 1.])) Out[159]: array([False, True, False, False, False, False]) Out[160]: False Out[161]:
Out[162]:
Out[163]: False Out[164]: 'Ejercicios' Ejercicio 1.
In [166]: a = np.zeros(( 3 , 4 )) a In [167]: a[ 0 , :] = 1 a In [168]: b = np.zeros(( 3 , 4 )) b[- 1 ] = np.arange( 5 , 9 ) b In [169]: print("Ejercicio 2") print("1. Crea un vector de 10 elementos, siendo los impares unos y los pares doses.") print("2. Crea un «tablero de ajedrez», con unos en las casillas negras y ceros en las blanc as.") In [170]: v = np.ones( 10 ) v In [171]: v[:: 2 ] = 2 v In [172]: tablero = np.zeros(( 8 , 8 ))
In [177]: normalized = m2 / np.sqrt(np.sum(m2** 2 )) print(normalized) Out[176]: array([[ 654., 511., 796., 62., 254.], [ 235., 1000., 998., 319., 425.], [ 82., 545., 54., 197., 760.], [ 756., 349., 42., 427., 126.], [ 827., 106., 376., 650., 330.]]) [[0.24881585 0.19441116 0.30284009 0.02358805 0.0966349 ] [0.08940631 0.38045237 0.37969146 0.12136431 0.16169226] [0.03119709 0.20734654 0.02054443 0.07494912 0.2891438 ] [0.28762199 0.13277788 0.015979 0.16245316 0.047937 ] [0.31463411 0.04032795 0.14305009 0.24729404 0.12554928]]