Me saqué las ganas de experimentar y probé cosas que no estaban en la clase. Siempre hay que estimular la curiosidad intelectual.

¿Cómo manejar las dimensiones en NumPy?
Las dimensiones en NumPy transforman tu manera de trabajar con datos. Entender cómo manejar y manipular datos en múltiples dimensiones es crucial para cualquier científico de datos, pues permite abordar problemas complejos con mayor eficiencia y precisión. En este artículo, aprenderás a trabajar con diferentes dimensiones en NumPy, desde un simple valor escalar hasta complejos sensores multidimensionales, explorando ejemplos prácticos y métodos matemáticos útiles.
¿Qué es un escalar en NumPy?
Un escalar en NumPy es el equivalente a un valor simple o único, representado como una dimensión cero. Por ejemplo, si estás interesado en la temperatura de tu ciudad en un día cualquiera, este dato sería un escalar. Imagina que queremos representar la temperatura de un día determinado, un valor simple de 42 grados:
import numpy as np escalar = np.array(42) print(escalar) # Salida: 42 print(type(escalar)) # Salida: <class 'numpy.ndarray'>
¿Cómo crear un vector?
Pues bien, si lo que deseas es almacenar datos de toda una semana, entonces necesitas un vector. Un vector es una secuencia ordenada y se representa como una dimensión uno en NumPy:
vector = np.array([30, 29, 42, 35, 33, 36, 42]) print(vector)
El vector anterior representa una lista de temperaturas durante una semana, cada valor corresponde a un día diferente.
¿Cómo se trabaja con matrices en NumPy?
Las matrices en NumPy se utilizan cuando trabajamos con dos dimensiones, lo cual es común en datos tabulares o imágenes. Almacenar y acceder a datos organizados en filas y columnas puede ser muy eficiente:
matriz = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) print(matriz)
Una matriz, como la del ejemplo, puede facilitar la representación de píxeles de una imagen o productos vendidos mes a mes en un conjunto de datos de ventas.
¿Qué es un tensor y cómo se representa?
Un tensor es una extensión de matrices a más dimensiones, utilizado para representar estructuras de datos más complejas, como imágenes en 3D en las que se trabaja con los canales RGB:
tensor = np.array([ [ [1, 2], [3, 4] ], [ [5, 6], [7, 8] ] ]) print(tensor)
Un tensor de tres dimensiones como este puede manejar cantidades impresionantes de datos, ideal para proyectos avanzados de aprendizaje automático.
¿Cuáles son las formas de crear arrays en NumPy?
NumPy ofrece diversas formas para crear arrays, cada una adaptándose a situaciones específicas:
np.zeros para matrices de ceros.Veamos un ejemplo usando arange:
rango = np.arange(10) print(rango) # Salida: [0 1 2 3 4 5 6 7 8 9]
Y la creación de una matriz identidad:
identidad = np.eye(3) print(identidad)
¿Qué otras funciones matemáticas puedo utilizar con NumPy?
NumPy ofrece varias funciones matemáticas avanzadas, como diag para crear matrices diagonales y random para generar matrices con valores aleatorios:
diagonal = np.diag([1, 2, 3, 4]) print(diagonal) aleatoria = np.random.rand(2, 3) print(aleatoria)
Estos métodos sirven para aplicaciones que van desde álgebra lineal hasta simulaciones estocásticas. Te recomiendo explorar más sobre métodos numéricos y álgebra lineal para sacar el máximo provecho de NumPy.
¡Conviértete en un experto! Practica estos conceptos, explora nuevas funciones y siempre mantente curioso. NumPy es una herramienta poderosa para el manejo de datos y tus habilidades seguirán creciendo con cada desafío. ¡Adelante!
Las dimensiones en NumPy transforman tu manera de trabajar con datos. Entender cómo manejar y manipular datos en múltiples dimensiones es crucial para cualquier científico de datos, pues permite abordar problemas complejos con mayor eficiencia y precisión. En este artículo, aprenderás a trabajar con diferentes dimensiones en NumPy, desde un simple valor escalar hasta complejos sensores multidimensionales, explorando ejemplos prácticos y métodos matemáticos útiles.
Un escalar en NumPy es el equivalente a un valor simple o único, representado como una dimensión cero. Por ejemplo, si estás interesado en la temperatura de tu ciudad en un día cualquiera, este dato sería un escalar. Imagina que queremos representar la temperatura de un día determinado, un valor simple de 42 grados:
import numpy as np
escalar = np.array(42)
print(escalar) # Salida: 42
print(type(escalar)) # Salida: <class 'numpy.ndarray'>
Pues bien, si lo que deseas es almacenar datos de toda una semana, entonces necesitas un vector. Un vector es una secuencia ordenada y se representa como una dimensión uno en NumPy:
vector = np.array([30, 29, 42, 35, 33, 36, 42])
print(vector)
El vector anterior representa una lista de temperaturas durante una semana, cada valor corresponde a un día diferente.
Las matrices en NumPy se utilizan cuando trabajamos con dos dimensiones, lo cual es común en datos tabulares o imágenes. Almacenar y acceder a datos organizados en filas y columnas puede ser muy eficiente:
matriz = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
print(matriz)
Una matriz, como la del ejemplo, puede facilitar la representación de píxeles de una imagen o productos vendidos mes a mes en un conjunto de datos de ventas.
Un tensor es una extensión de matrices a más dimensiones, utilizado para representar estructuras de datos más complejas, como imágenes en 3D en las que se trabaja con los canales RGB:
tensor = np.array([
[
[1, 2], [3, 4]
],
[
[5, 6], [7, 8]
]
])
print(tensor)
Un tensor de tres dimensiones como este puede manejar cantidades impresionantes de datos, ideal para proyectos avanzados de aprendizaje automático.
NumPy ofrece diversas formas para crear arrays, cada una adaptándose a situaciones específicas:
np.zeros para matrices de ceros.Veamos un ejemplo usando arange:
rango = np.arange(10)
print(rango) # Salida: [0 1 2 3 4 5 6 7 8 9]
Y la creación de una matriz identidad:
identidad = np.eye(3)
print(identidad)
NumPy ofrece varias funciones matemáticas avanzadas, como diag para crear matrices diagonales y random para generar matrices con valores aleatorios:
diagonal = np.diag([1, 2, 3, 4])
print(diagonal)
aleatoria = np.random.rand(2, 3)
print(aleatoria)
Estos métodos sirven para aplicaciones que van desde álgebra lineal hasta simulaciones estocásticas. Te recomiendo explorar más sobre métodos numéricos y álgebra lineal para sacar el máximo provecho de NumPy.
¡Conviértete en un experto! Practica estos conceptos, explora nuevas funciones y siempre mantente curioso. NumPy es una herramienta poderosa para el manejo de datos y tus habilidades seguirán creciendo con cada desafío. ¡Adelante!
Me saqué las ganas de experimentar y probé cosas que no estaban en la clase. Siempre hay que estimular la curiosidad intelectual.

En resumen, un vector es una lista de números que describe una dirección y una magnitud, mientras que un tensor es una extensión que puede tener muchas dimensiones y describir relaciones más complejas.
Las matrices de Vandermonde se utilizan en criptografía para crear sistemas de cifrado más seguros. Ayudan a generar claves que son difíciles de descifrar sin la información correcta.
vander(x, n) define un array de Vandermonde como una matriz 2D NumPy. Cada columna del array Vandermonde es una potencia decreciente del array 1D de entrada o lista o tupla, x donde el orden polinómico más alto es n-1. Esta rutina de creación de matrices es útil para generar modelos lineales de mínimos cuadrados, como tal:


ya se me juntaron todos los cursos que mas me interesan
Existen 6 mecanismos generales para crear Arrays:
Puede utilizar estos métodos para crear ndarrays o arrays estructurados.
Una forma visual para entender la dimensionalidad en numpy

Profe Carli 👩💻🇧🇴 comparto contigo el RETO
Un array de valores aleatorios
random_int_array = np.random.randint(1, 100, size=(4, 4))
print(random_int_array)
Es posible crear un array que tenga en cada entrada el mismo número, con el método np.full.
Un ejemplo:

Escribir arrays en Python (usando listas, tuplas o arrays de bibliotecas como NumPy) puede presentar varios retos, especialmente para quienes están empezando o trabajan en proyectos complejos. A continuación, describo los principales desafíos, organizados de manera clara y con ejemplos prácticos, asumiendo que te refieres a "arrays" en un sentido general (listas o NumPy arrays, ya que Python no tiene arrays nativos como otros lenguajes):
### 1. **Confusión entre listas y arrays de NumPy**
- **Reto**: Los principiantes suelen confundir las listas de Python con los arrays de NumPy, ya que las listas son más flexibles pero menos eficientes para operaciones numéricas, mientras que los arrays de NumPy están diseñados para cálculos matemáticos y requieren instalación adicional.
- **Ejemplo**:
```python
# Lista estándar
lista = [1, 2, 3]
# No puedes hacer operaciones vectoriales directamente
try:
lista * 2 # Resultado: [1, 2, 3, 1, 2, 3] (duplica la lista)
except:
pass
# Con NumPy
import numpy as np
array = np.array([1, 2, 3])
print(array * 2) # Resultado: [2, 4, 6] (multiplica cada elemento)
```
- **Solución**: Entender que las listas son para datos heterogéneos y de propósito general, mientras que los arrays de NumPy son para cálculos numéricos eficientes. Importar NumPy y usarlo explícitamente para operaciones matemáticas.
### 2. **Gestión de tipos de datos**
- **Reto**: Las listas de Python permiten mezclar tipos de datos (enteros, cadenas, etc.), lo que puede causar errores en operaciones que esperan tipos uniformes. En NumPy, los arrays requieren un tipo de datos homogéneo, y la conversión automática puede generar resultados inesperados.
- **Ejemplo**:
```python
# Lista con tipos mixtos
lista = [1, "dos", 3.0]
# Operaciones pueden fallar o ser impredecibles
# NumPy fuerza un tipo común
array = np.array([1, "2", 3.0]) # Convierte todo a cadena o float
print(array) # Resultado: ['1' '2' '3.0'] (cadenas si hay strings)
```
- **Solución**: Asegurarte de que los datos sean del mismo tipo antes de crear un array de NumPy o limpiar la lista para evitar tipos mixtos. Usa dtype para controlar el tipo en NumPy:
```python
array = np.array([1, 2, 3], dtype=int)
```
### 3. **Índices y acceso a elementos**
- **Reto**: Los errores de indexación (como acceder a un índice fuera de rango) son comunes, especialmente al trabajar con arrays multidimensionales o al olvidar que los índices en Python comienzan en 0.
- **Ejemplo**:
```python
lista = [1, 2, 3]
try:
print(lista[3]) # Error: IndexError: list index out of range
except IndexError as e:
print(e)
# En NumPy con arrays multidimensionales
array = np.array([[1, 2], [3, 4]])
print(array[1, 1]) # Correcto: 4
# print(array[2, 2]) # Error: Index out of bounds
```
- **Solución**: Verificar siempre los límites del array con len() (para listas) o .shape (para NumPy arrays). Usar try-except para manejar errores o validar índices antes de acceder.
### 4. **Eficiencia en operaciones grandes**
- **Reto**: Las listas de Python son lentas para operaciones masivas porque no están optimizadas para cálculos vectoriales. Iterar manualmente sobre listas grandes es ineficiente comparado con las operaciones vectorizadas de NumPy.
- **Ejemplo**:
```python
# Usando lista con bucle
lista = list(range(1000000))
resultado = [x * 2 for x in lista] # Lento para datos grandes
# Usando NumPy
array = np.array(lista)
resultado = array * 2 # Mucho más rápido
```
- **Solución**: Usar NumPy para operaciones con grandes volúmenes de datos. Evitar bucles explícitos y aprovechar funciones vectorizadas.
### 5. **Manipulación de arrays multidimensionales**
- **Reto**: Trabajar con arrays multidimensionales (como matrices) en NumPy puede ser confuso, especialmente al realizar operaciones como transposición, rebanado (slicing) o redimensionamiento.
- **Ejemplo**:
```python
array = np.array([[1, 2, 3], [4, 5, 6]])
print(array.shape) # (2, 3)
print(array[0:2, 1:3]) # Rebanado: [[2, 3], [5, 6]]
# Error común: olvidar el orden de dimensiones
# array[1, 3] # Error: índice fuera de rango
```
- **Solución**: Familiarizarse con .shape, .ndim y la sintaxis de rebanado. Usar np.transpose() o .T para transponer y np.reshape() para redimensionar.
### 6. **Memoria y rendimiento**
- **Reto**: Los arrays de NumPy consumen menos memoria que las listas para datos numéricos, pero trabajar con arrays muy grandes puede agotar la memoria si no se gestionan correctamente.
- **Ejemplo**:
```python
# Lista grande
lista = [0] * 1000000 # Usa más memoria
# Array de NumPy
array = np.zeros(1000000, dtype=np.int8) # Menos memoria con tipo adecuado
```
- **Solución**: Usar tipos de datos específicos en NumPy (int8, float32, etc.) para optimizar memoria. Considerar procesar datos en bloques (chunking) para arrays masivos.
### 7. **Errores en operaciones matemáticas**
- **Reto**: Operaciones como división por cero, valores nulos (NaN) o infinito (inf) en arrays de NumPy pueden generar resultados inesperados o errores si no se manejan.
- **Ejemplo**:
```python
array = np.array([1, 0, 3])
resultado = 1 / array # Genera: [1., inf, 0.333...]
print(np.isnan(resultado) | np.isinf(resultado)) # Detecta problemas
```
- **Solución**: Usar funciones como np.isnan(), np.isinf() o np.nan\_to\_num() para manejar valores problemáticos.
### 8. **Compatibilidad con otras bibliotecas**
- **Reto**: Al integrar arrays con bibliotecas como Pandas, TensorFlow o SciPy, puede haber problemas de formato o tipo de datos, ya que algunas esperan arrays de NumPy y otras listas o tensores.
- **Ejemplo**:
```python
import pandas as pd
lista = [1, 2, 3]
df = pd.DataFrame(lista) # Funciona
array = np.array([1, 2, 3])
df = pd.DataFrame(array) # También funciona, pero hay que asegurarse del formato
```
- **Solución**: Verificar la documentación de la biblioteca para confirmar el formato esperado. Convertir entre listas y arrays con np.array() o .tolist() según sea necesario.
### Consejos generales:
- **Documentación y práctica**: Consulta la documentación de NumPy (numpy.org) para funciones específicas y prueba ejemplos pequeños antes de trabajar con datos grandes.
- **Depuración**: Usa print() o herramientas como pdb para inspeccionar arrays y detectar errores.
- **Optimización**: Prefiere operaciones vectorizadas sobre bucles y elige tipos de datos adecuados para ahorrar memoria.
- **Comunidad**: Busca ayuda en foros como Stack Overflow o posts en X si encuentras problemas específicos.
Me parecio genial ejecutar Google Colab desde Visual Studio Code, asi tengo todo en un solo entorno, me gustaria compartirles el video que lo explica: