Guías de Make it Real
  • Introduction
  • Preparación
    • Conceptos básicos
    • El editor de texto
    • La línea de comandos
    • Git y Github
  • Git
    • Instalación y configuración
    • Conceptos y comandos esenciales
    • Ignorando archivos y carpetas
    • Trabajando con ramas
    • Repositorios remotos
    • Etiquetas
    • Reescribiendo la historia
    • Stashing
    • Github
  • HTML y CSS
    • Introducción a HTML
    • Introducción a CSS
    • Más elementos de HTML
    • Tablas
    • Formularios
    • El modelo de caja en CSS
    • Fondos (backgrounds)
    • Posicionamiento
    • Selectores CSS
    • Bordes, sombras y gradientes
    • Media Queries
    • Unidades en CSS
    • Flexbox
  • Bootstrap 3
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Personalizando Bootstrap
    • Utilizando plantillas
  • Bootstrap 4
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Clases utilitarias
    • Personalizando Bootstrap
  • Ruby
    • Primeros pasos
    • Tipos y operadores
    • Variables y entrada de usuario
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Hashes
    • Métodos
    • Manipulación de archivos
    • Gemas
  • Programación Orientada a Objetos en Ruby
    • Clases y objetos
    • Métodos y atributos de clase
    • Herencia
    • Módulos
    • Excepciones
  • JavaScript I
    • Primeros pasos
    • Tipos y operadores
    • Variables
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Funciones
    • Objetos literales
    • Manipulación de archivos
  • JavaScript en el navegador
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Local Storage
    • History API
    • Canvas
    • Notificaciones Web
    • Audio y Video
    • Arrastrar y soltar
    • JSON
    • Realizando peticiones HTTP
  • jQuery
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Plugins
    • Realizando peticiones con AJAX
  • JavaScript II
    • Prototipos
    • Librerías (Node.js)
    • ES6
    • Uso de this (call, apply, bind)
    • Programación funcional
    • Scope, hoisting, closures
    • Programación asincrónica
    • Testing
  • HTTP y Sinatra
    • Primeros pasos con Sinatra
    • El protocolo HTTP
    • Rutas
    • Formularios
    • Cookies y sesión
  • Bases de datos
    • Bases de datos relacionales
    • SQL
    • DDL
    • MongoDB
  • Ruby on Rails I
    • Primeros pasos
    • Arquitectura
    • Rutas
    • Layouts y rendering
    • ActiveRecord - Modelos
    • ActiveRecord - Migraciones
    • ActiveRecord - Validaciones
    • ActiveRecord - Asociaciones
    • ActiveRecord - Scopes
    • ActiveRecord - Callbacks
    • Recursos REST
    • Formularios
    • Autenticación con Devise
    • Sass y Bootstrap
    • Envío de correos
    • Carga de imágenes
    • Seeds
    • Heroku
  • Ruby on Rails II
    • Usando JavaScript (y jQuery) en Rails
    • Testing en Ruby
    • Testing en Rails
    • Creando una Web API
    • Web Sockets
  • Express.js
    • Primeros Pasos
    • El protocolo HTTP
    • Rutas
    • Vistas
    • Middlewares y manejo de errores
    • Formularios
    • Cookies y sesión
  • Express.js II
    • Mongoose
    • Web Sockets
    • Autenticación
    • Envío de correos
    • Cargar imágenes
    • Deployment
    • Testing
    • Creando una Web API
  • React
    • Primeros pasos
    • JSX
    • Componentes
    • Más sobre estado
    • Formularios
    • Peticiones HTTP con Axios
    • React Hooks
    • React Context
    • React Bootstrap
    • React Router
    • Carga de Imágenes
    • Testing
    • Estructura de carpetas
    • Componentes de clase
  • Redux
    • Primeros pasos
    • Action creators
    • Usando la librería react-redux
    • Middlewares
    • Operaciones asincrónicas con redux-thunk
    • Combinando funciones reductoras
    • Testing
    • Redux Tool Kit
  • Algoritmos
    • Describiendo un algoritmo
    • Complejidad (Big-O)
    • Estructuras de datos
    • Recursión
    • Ordenamiento
    • Búsqueda
    • Programación dinámica
  • Python
    • Primeros Pasos
    • Tipos y Variables
    • Funciones
    • Control de Flujo
    • Listas
    • Ciclos
    • Diccionarios, Tuplas y Sets
  • NumPy
    • Primeros Pasos
    • Arreglos
    • Arreglos Multidimensionales
    • Estadística con NumPy
    • Distribución Estadística
  • Pandas
    • Primeros Pasos
    • Inspección y Selección de Datos
    • Modificando Dataframes
    • La Función Lambda
    • Aggregates en Pandas
    • Múltiples Tablas
Powered by GitBook
On this page
  • Conociendo la forma de un arreglo
  • Creando arreglos multidimensionales
  • Cambiando la forma de un arreglo
  • Obteniendo valores de un arreglo multidimensional
  • Multiplicando arreglos
  • Transponer un arreglo
  • Cargando y guardando arreglos en archivos CSV
  1. NumPy

Arreglos Multidimensionales

En el capítulo anterior vimos arreglos de una sola dimensión. Sin embargo, podemos crear arreglos de varias dimensiones, similar a como podemos crear listas de Python que contienen otras listas internamente. Por ejemplo, creemos un arreglo de dos dimensiones (2-D):

arr = np.array([
  [1, 2],
  [3, 4]
])

# También se puede en una sola línea, aunque no es tan legible
# arr = np.array([[1, 2], [3, 4]])

Conociendo la forma de un arreglo

En el capítulo anterior vimos el atributo size para conocer el número de elementos de un arreglo. Este método sigue aplicando para arreglos multidimensionales:

arr = np.array([
  [1, 2],
  [3, 4]
])

arr.size # 4

Sin embargo, a veces es útil también saber la forma de un arreglo, es decir, la longitud de cada una de las dimensiones. Para esto podemos utilizar el atributo shape:

arr.shape # (2, 2)

Creando arreglos multidimensionales

En el capítulo anterior vimos cómo crear arreglos utilizando métodos como arange, ones y zeros, entre otros. Algunos de estos métodos reciben la forma del arreglo como primer argumento:

np.ones((2, 2)) # [[1.,1.], [1.,1.]]
np.zeros((2, 2, 2)) # un arreglo de tres dimensiones (un cubo): 2 x 2 x 2

np.full((3, 3, 8), 5) # un arreglo de tres dimensiones (un cubo): 3 x 3 x 8

Otros métodos como arange no permiten especificar la forma del arreglo final. Sin embargo, podemos cambiar la forma de un arreglo como veremos a continuación.

Cambiando la forma de un arreglo

Para cambiar la forma de un arreglo utilizamos el método reshape. Por ejemplo, aunque el método arange no permite especificar la forma, podemos cambiar la forma con reshape:

arr = np.arange(6) # [0, 1, 2, 3, 4, 5]
arr.reshape((3, 2))
# [[0, 1],
#  [2, 3],
#  [4, 5]]

# o en una sola línea
# np.arange(6).reshape((3, 2))

Obteniendo valores de un arreglo multidimensional

Para obtener los valores de un arreglo multidimensional debemos especificar los índices en cada dimensión. Por ejemplo, para obtener un valor en un arreglo de dos dimensiones debemos pasar dos índices:

arr = np.array([
  [1, 2],
  [3, 4]
])
arr[0, 0] # 1
arr[0, 1] # 2
arr[1, 0] # 3
arr[1, 1] # 4

Para un arreglo de tres dimensiones pasaríamos tres índices, y así sucesivamente.

Si queremos seleccionar la columna entera pasamos dos puntos (:) como primer índice:

arr[:,0] # [1, 3]

Si queremos seleccionar la fila entera pasamos dos puntos (:) como segundo índice:

arr[1,:] # [3, 4]

Podemos incluso seleccionar rangos dentro de las filas y las columnas:

arr = np.array([
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
])

arr[1:, :2] # [[4, 5], [7, 8]]

Multiplicando arreglos

Para realizar la multiplicación entre dos arreglos utiliza el método matmul o utilizamos el operador @:

a = np.array([
  [2, 2]
])
b = np.array([
  [2],
  [2]
])
np.matmul(a, b) # [[8]]
a @ b # [[8]]

A esta multiplicación se le llama también producto de matrices o producto punto, y es diferente a la multiplicación elemento a elemento. Veamos otro ejemplo:

a = np.array([
  [1, 0],
  [0, 1]
])
b = np.array([
  [4, 1],
  [2, 2]
])

np.matmul(a, b) # [[4, 1], [2, 2]]
a @ b # [[4, 1], [2, 2]]

Si queremos multiplicar elemento a elemento utilizaríamos el operador asterisco (*):

a * b # [[4, 0], [0, 2]]

Transponer un arreglo

Para transponer un arreglo utiliza el método transpose o el atributo T:

arr = np.array([
  [1,2],
  [3,4]
])
arr.T
# [[1, 3],
#  [2, 4]]

Cargando y guardando arreglos en archivos CSV

Para cargar y guardar arreglos en CSV (archivos separados por coma) utiliza los métodos loadtxt y savetxt.

arr = np.array([34,9,12,11,7])

# Guardar a un archivo CSV
np.savetxt('arreglo.csv', arr, delimeter=',')

# Cargar de un archivo CSV
arr = np.loadtxt('arreglo.csv') # [34,9,12,11,7]

Si necesitamos manejar datos faltantes es mejor utilizar el método genfromtxt.

PreviousArreglosNextEstadística con NumPy

Last updated 2 years ago