Los tipos enteros en C representan etiuqetas de ubicaciones de memoria con bytes codificados como valores numéricos. En Python, los enteros son punteros a objetos que contienen información completa sobre el valor, inlcuyendo representaciones binarias.
Los elementos de una lista en Python son referencias completas a objetos independientes.
Creación de arreglos en Numpy
import numpy as np
# Arreglo de 10 elementos cero
arr_ceros = np.zeros(10, dtype=int)
# Matriz 3x5 con valores uno flotante
mat_unos = np.ones((3,5), dtype=float)
# Matriz 3x5 con valor fijo
mat_fijo = np.full((3,5), 3.14)
# Secuencia lineal
secuencia = np.arange(0, 20, 2)
# Distribución uniforme
distribucion = np.linspace(0, 1, 5)
# Matriz aleatoria uniforme
mat_aleatoria = np.random.random((3,3))
# Distribución normal estándar
distribucion_normal = np.random.normal(0, 1, (3,3))
# Matriz entera aleatoria
mat_enteros = np.random.randint(0, 10, (3,3))
# Matriz identidad
mat_identidad = np.eye(3,3)
# Arreglo no inicializado
arreglo_nuevo = np.empty(3)
Tipos de datos estándar
| Tipo | Descripción |
|---|---|
| bool_ | Valor booleano, almacenado en un byte |
| int8/int16/int32/int64 | Enteros con rango ±2ⁿ (menos 1 para positivos) |
| uint8/uint16/uint32/uint64 | Enteros sin signo desde 0 hasta 2ⁿ-1 |
| float16/float32/float64 | Precisión semidoble/doble con bits para exponente y mantisa |
| complex64/complex128 | Números complejos con componentes flotantes |
Propiedades de los arreglos
datos = np.random.randint(10, size=(3,4))
print("Dimensiones:", datos.ndim)
print("Forma:", datos.shape)
print("Tamaño total:", datos.size)
print("Tipo de dato:", datos.dtype)
Indexación
arreglo = np.arange(10)
print(arreglo[2]) # Índice 2
print(arreglo[-1]) # Índice final
matriz = np.random.randint(0,10,(3,4))
print(matriz[1,2]) # Fila 1, columna 2
matriz[1,2] = 4 # Modificación de valor
Rebanado
x = np.arange(10)
print(x[:5]) # Primeros 5 elementos
print(x[5:]) # Últimos 5 elementos
print(x[5:10:2]) # Intervalo con paso 2
print(x[::-1]) # Inversión completa
print(x[5::-2]) # Inversión desde índice 5
Arreglos multidimentionales
matriz = np.random.randint(0,13,(3,4))
print(matriz[:2, :3]) # Filas 0-1, columnas 0-2
print(matriz[:, ::2]) # Todas las filas, columnas cada 2
print(matriz[::-1, ::-1]) # Inversión completa
Redimensionamiento
x = np.arange(1,10)
print(x.reshape(3,3)) # Formato 3x3
y = np.array([1,2,3])
print(y.reshape(1,3)) # Vector fila
print(y[np.newaxis, :]) # Uso de newaxis
print(y.reshape(3,1)) # Vector columna
Concatenación y partición
Concatenación
a = np.array([1,2,3])
b = np.array([3,2,1])
print(np.concatenate([a,b])) # Concatenación 1D
c = np.array([[1,2,3],[4,5,6]])
print(np.concatenate([c,c], axis=1)) # Concatenación 2D
print(np.hstack([c,c])) # Concatenación horizontal
print(np.vstack([c,c])) # Concatenación vertical
Partición
x = np.arange(12)
part1, part2, part3 = np.split(x, [3,5])
print(part1, part2, part3)
matriz = np.arange(16).reshape((4,4))
superior, inferior = np.vsplit(matriz, [2])
print(superior)
print(inferior)
izquierda, derecha = np.hsplit(matriz, [2])
print(izquierda)
print(derecha)