Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Parte 2 curso de python en estadistica, Ejercicios de Metodología de Investigación

Parte 2 curso de python en estadistica

Tipo: Ejercicios

2019/2020

Subido el 27/09/2021

hi-im-adc
hi-im-adc 🇨🇴

4 documentos

1 / 13

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
In [91]:
importimport 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]:
importimport 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
- Una biblioteca para Python: ndarray + ufunc
- Los arrays multidimensionales (ndarray) nos permiten almacenar datos de manera estructurad
a
- Las funciones universales (ufunc) nos permiten operar con esos datos de manera eficiente
Out[93]:
<function numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)>
Lo que hacemos para crear un alias al parquete NumPy de nombre np.Es simplemente una forma d
e abreviar el codigo
Para encontrar ayuda sobre cierto tema podemos usar la función lookfor:
Search results for 'solve'
--------------------------
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.solve1
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.
pf3
pf4
pf5
pf8
pf9
pfa
pfd

Vista previa parcial del texto

¡Descarga Parte 2 curso de python en estadistica y más Ejercicios en PDF de Metodología de Investigación solo en Docsity!

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

  • Una biblioteca para Python: ndarray + ufunc
  • Los arrays multidimensionales (ndarray) nos permiten almacenar datos de manera estructurad a
  • Las funciones universales (ufunc) nos permiten operar con esos datos de manera eficiente Out[93]: <function numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)> Lo que hacemos para crear un alias al parquete NumPy de nombre np.Es simplemente una forma d e abreviar el codigo Para encontrar ayuda sobre cierto tema podemos usar la función lookfor: Search results for 'solve'

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 ---->----> 11 np..ones_like((i3)) NameErrorNameError: name 'i3' is not defined Out[141]: array([0. , 0.11111111, 0.22222222, 0.33333333, 0.44444444, 0.55555556, 0.66666667, 0.77777778, 0.88888889, 1. ]) Out[142]: array([ 1. , 1.1513954 , 1.32571137, 1.52641797, 1.75751062, 2.02358965, 2.32995181, 2.6826958 , 3.0888436 , 3.55648031, 4.09491506, 4.71486636, 5.42867544, 6.25055193, 7.19685673, 8.28642773, 9.54095476, 10.98541142, 12.64855217, 14.56348478, 16.76832937, 19.30697729, 22.22996483, 25.59547923, 29.47051703, 33.93221772, 39.06939937, 44.98432669, 51.79474679, 59.63623317, 68.6648845 , 79.06043211, 91.0298178 , 104.81131342, 120.67926406, 138.94954944, 159.98587196, 184.20699693, 212.09508879, 244.20530945, 281.1768698 , 323.74575428, 372.75937203, 429.19342601, 494.17133613, 568.9866029 , 655.12855686, 754.31200634, 868.51137375, 1000. ]) Out[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.'

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 ))

  1. Crear un array z1 3x4 lleno de ceros de tipo entero.
  2. Crear un array z2 3x4 lleno de ceros salvo la primera fila que serán todo unos.
  3. Crear un array z3 3x4 lleno de ceros salvo la última fila que será el rango entre 5 y 8. Out[166]: array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]]) Out[167]: array([[1., 1., 1., 1.], [0., 0., 0., 0.], [0., 0., 0., 0.]]) Out[168]: array([[0., 0., 0., 0.], [0., 0., 0., 0.], [5., 6., 7., 8.]]) Ejercicio 2
  4. Crea un vector de 10 elementos, siendo los impares unos y los pares doses.
  5. Crea un «tablero de ajedrez», con unos en las casillas negras y ceros en las blancas. Out[170]: array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]) Out[171]: array([2., 1., 2., 1., 2., 1., 2., 1., 2., 1.])

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]]