numpy — operaciones con arreglos compatibles con numpy

El submódulo numpy de ulab proporciona una API compatible con numpy construida en torno al tipo de arreglo n-dimensional ndarray. Implementa un subconjunto cuidadosamente seleccionado de numpy de CPython: construcción de arreglos, operaciones matemáticas elemento a elemento, reducciones y estadísticas, álgebra lineal, FFT, generación de números aleatorios, ajuste polinómico y E/S básica.

El submódulo se importa convencionalmente como np:

from ulab import numpy as np

a = np.array([1, 2, 3, 4], dtype=np.float)
b = np.linspace(0, 1, num=5)
c = np.dot(a.reshape((2, 2)), a.reshape((2, 2)))

Cada argumento dtype es una de las constantes enteras expuestas a nivel de módulo: numpy.bool, numpy.uint8, numpy.int8, numpy.uint16, numpy.int16, numpy.float (el valor predeterminado) y (cuando se compila con soporte para complejos) numpy.complex. El tipo de resultado ndarray se refiere a numpy.ndarray.

Submódulos

clase ndarray — el arreglo n-dimensional

El ndarray es el contenedor n-dimensional y consciente del dtype que constituye el núcleo de numpy / ulab. Los datos se almacenan en un bloque contiguo cuya interpretación se describe mediante una pequeña cabecera (dtype, shape, strides, ndim, itemsize). Muchas operaciones –reshape, transpose, segmentación– solo ajustan esta cabecera y, por tanto, son muy económicas; los métodos que asignan almacenamiento nuevo (copy, flatten, la mayoría de las operaciones aritméticas) devuelven un nuevo arreglo denso.

El mismo tipo es accesible como ulab.ndarray, numpy.ndarray y (dentro de esta página) simplemente ndarray.

class numpy.ndarray(values: ndarray | bytes | list | tuple, *, dtype: int = numpy.float)

Crea un nuevo ndarray.

Parámetros:
  • values – Datos de origen. Ya sea otro ndarray (que se copia en profundidad, con conversión de tipo si dtype difiere) o cualquier iterable de MicroPython. Los iterables anidados producen arreglos multidimensionales; todos los iterables internos deben tener la misma longitud o se lanza un ValueError.

  • dtype – Tipo de elemento para el nuevo arreglo. Uno de los enteros de código de tipo expuestos por numpy (numpy.bool, numpy.uint8, numpy.int8, numpy.uint16, numpy.int16, numpy.float y –cuando se admite– numpy.complex), o una instancia de dtype. El valor predeterminado es numpy.float.

La función de fábrica numpy.array es la forma convencional de crear un ndarray; reenvía a este constructor.

byteswap(*, inplace: bool = False) ndarray

Intercambia el orden de bytes de cada elemento. Para arreglos uint16, int16, float y complex, esto invierte el orden de bytes por elemento, lo cual resulta útil al consumir datos de periféricos cuya endianidad no coincide con la del microcontrolador. Para dtypes de un solo byte (bool, uint8, int8) esto es una operación nula que devuelve una vista o copia.

Si inplace es False (el valor predeterminado), se devuelve un nuevo ndarray y el original queda intacto. Si inplace es True, los bytes de self se intercambian en el lugar y se devuelve una vista de self.

copy() ndarray

Devuelve una nueva copia densa y profunda del arreglo. La copia posee sus propios datos; las modificaciones realizadas en ella no afectan al original.

flatten(*, order: str = 'C') ndarray

Devuelve una nueva copia unidimensional del arreglo.

Parámetros:

order'C' (el valor predeterminado) recorre los datos en orden C (el último eje varía más rápido); 'F' los recorre en orden Fortran (el primer eje varía más rápido).

reshape(shape: int | tuple[int, ...]) ndarray

Devuelve una vista del arreglo con una nueva forma. El número total de elementos debe permanecer invariable o se lanza un ValueError. Solo está disponible cuando ULAB_MAX_DIMS > 1. Equivalente a asignar a shape.

sort(*, axis: int | None = -1) None

Ordena el arreglo en el lugar.

Parámetros:

axis – Eje a lo largo del cual ordenar. -1 (el valor predeterminado) ordena a lo largo del último eje; None primero aplana el arreglo y luego lo ordena.

tobytes() bytearray

Devuelve un bytearray que sirve de alias al búfer de datos subyacente del arreglo. Las escrituras a través del bytearray devuelto modifican el arreglo en el lugar. Lanza ValueError si el arreglo no es denso (por ejemplo, una vista segmentada).

tolist() list

Devuelve el contenido del arreglo como una list de Python (posiblemente anidada). La profundidad de anidamiento es igual a ndim.

transpose() ndarray

Devuelve la transpuesta del arreglo (ejes invertidos). Para arreglos unidimensionales esto devuelve self. Solo está disponible cuando ULAB_MAX_DIMS > 1. El atributo T es una abreviatura de este método.

dtype: dtype | int

El tipo de datos de los elementos del arreglo. Devuelve una instancia de dtype cuando el firmware se compila con ULAB_HAS_DTYPE_OBJECT habilitado; de lo contrario, devuelve el código de tipo subyacente de un solo carácter como entero.

flat: flatiter

Un iterador plano que produce cada elemento del arreglo en orden C. A diferencia de flatten(), iterar sobre flat no asigna un nuevo arreglo.

itemsize: int

Tamaño en bytes de un único elemento del arreglo, derivado de dtype.

ndim: int

Número de dimensiones del arreglo (longitud de shape).

shape: tuple[int, ...]

Longitudes del arreglo a lo largo de cada eje. Asignar una tupla a shape cambia la forma del arreglo en el lugar (equivalente a reshape()).

size: int

Número total de elementos en el arreglo (el producto de shape).

strides: tuple[int, ...]

Número de bytes que hay que avanzar en memoria a lo largo de cada eje para alcanzar el siguiente elemento a lo largo de ese eje.

T: ndarray

La transpuesta del arreglo; equivalente a transpose().

real: ndarray

La parte real de un arreglo complejo, devuelta como un ndarray de tipo float. Para arreglos reales esto es una copia de self con el mismo dtype. Solo está disponible cuando el firmware se compiló con soporte para complejos.

imag: ndarray

La parte imaginaria de un arreglo complejo, devuelta como un ndarray de tipo float. Para arreglos reales esto es un arreglo de ceros con el mismo dtype que self. Solo está disponible cuando el firmware se compiló con soporte para complejos.

Operadores admitidos

Las instancias de ndarray admiten los siguientes operadores. Los operadores binarios difunden sus operandos siguiendo las reglas estándar de difusión (broadcasting) de numpy y siguen las reglas de promoción de tipos de numpy (por ejemplo, uint8 + int8 => int16, uint16 + int16 => float); las operaciones que involucran un operando complejo producen un resultado complejo.

Aritméticos (binarios): +, -, *, /, //, %, **. También se admiten los operandos reflejados (del lado derecho) y las variantes en el lugar +=, -=, *=, /=, %=, **=. Se aceptan tanto las formas ndarray-con-ndarray como ndarray-con-escalar. La división entera (//) y el operador módulo (%) no están implementados para arreglos complex.

Comparación: ==, !=, <, <=, >, >=. Cada uno devuelve un ndarray booleano de la forma de difusión.

A nivel de bits (solo arreglos enteros): &, |, ^. Aplicarlos a un arreglo float o complex lanza TypeError.

Unarios: + (devuelve una copia), - (negación; en dtypes sin signo los valores se ajustan módulo \(2^N\)), abs() (valor absoluto elemento a elemento; en dtypes sin signo devuelve una copia sin cálculo), ~ (inversión a nivel de bits, solo dtypes enteros), len() (devuelve la longitud del primer eje).

Indexación y segmentación: a[i], a[i, j, ...], a[start:stop:step], la indexación por máscara booleana (a[mask]) y la indexación por arreglo de enteros (avanzada) se admiten todas tanto en lecturas como en escrituras.

Iteración: Iterar sobre un ndarray produce subarreglos a lo largo del primer eje (un elemento a la vez para arreglos 1-D). Use flat para iterar sobre cada elemento escalar independientemente de la dimensionalidad.

El operador de multiplicación de matrices @ no está implementado; use numpy.dot (np.dot(a, b)) en su lugar.

Los operadores de desplazamiento (<<, >>) no están implementados a nivel de operador. Use numpy.left_shift y numpy.right_shift para desplazamientos de enteros elemento a elemento.

Construcción de arreglos

numpy.array(values: ndarray | list | tuple, *, dtype: int = float) ndarray

Construye un nuevo ndarray a partir de un iterable anidado de números. Constructor alternativo equivalente para numpy.ndarray.

numpy.arange(start: int | float, stop: int | float | None = None, step: int | float = 1, *, dtype: int | None = None) ndarray

Devuelve valores espaciados uniformemente sobre el intervalo semiabierto [start, stop). Si solo se proporciona un argumento posicional, se trata como stop con start = 0. Si se omite dtype, se infiere a partir de las entradas (entero si start, stop y step son todos enteros y están dentro del rango).

numpy.asarray(a: ndarray | list | tuple, *, dtype: int | None = None) ndarray

Si a ya es un ndarray cuyo dtype coincide con dtype (o dtype es None), devuelve a sin cambios; de lo contrario, crea un nuevo arreglo (con la conversión de dtype solicitada cuando se proporciona). Los iterables se convierten como en numpy.array.

numpy.concatenate(arrays: tuple, *, axis: int = 0) ndarray

Une una secuencia de ndarray a lo largo de un axis existente. Todos los arreglos de entrada deben compartir el mismo dtype, ndim y forma en todos los ejes excepto en axis.

numpy.diag(a: ndarray, *, k: int = 0) ndarray

Para un a 2-D, devuelve un arreglo 1-D que contiene la k-ésima diagonal. Para un a 1-D, devuelve un arreglo cuadrado 2-D con a colocado en la k-ésima diagonal. k puede ser positivo (por encima de la diagonal principal) o negativo (por debajo).

numpy.empty(shape: int | tuple[int, ...], *, dtype: int = float) ndarray

Alias de zeros; devuelve un arreglo lleno de ceros de forma shape y dtype dtype. (ulab no deja el búfer sin inicializar).

numpy.eye(N: int, M: int | None = None, k: int = 0, *, dtype: int = float) ndarray

Devuelve un arreglo 2-D de N x M (cuadrado N x N si M es None) con unos en la k-ésima diagonal y ceros en el resto.

numpy.frombuffer(buffer: bytes, *, dtype: int = float, count: int = -1, offset: int = 0) ndarray

Interpreta un objeto que cumple el protocolo de búfer como un ndarray 1-D de tipo dtype. count es el número de elementos a leer (-1 lee todos los elementos disponibles); offset omite esa cantidad de bytes al inicio del búfer.

numpy.full(shape: int | tuple[int, ...], fill_value: int | float | bool, *, dtype: int = float) ndarray

Devuelve un nuevo arreglo de forma shape y dtype dtype con cada elemento establecido en fill_value.

numpy.linspace(start: float, stop: float, num: int = 50, *, endpoint: bool = True, retstep: bool = False, dtype: int = float) ndarray | tuple[ndarray, float]

Devuelve num muestras espaciadas uniformemente sobre el intervalo cerrado [start, stop] (o semiabierto si endpoint es False). Cuando retstep es True, devuelve una tupla (samples, step). Valores start/stop complejos producen un arreglo complejo (cuando el soporte para complejos está habilitado).

numpy.logspace(start: float, stop: float, num: int = 50, *, base: float = 10.0, endpoint: bool = True, dtype: int = float) ndarray

Devuelve num muestras espaciadas uniformemente en una escala logarítmica: el resultado comienza en base ** start y termina en base ** stop.

numpy.meshgrid(*xi: ndarray, indexing: str = 'xy') tuple[ndarray, ...]

Devuelve una tupla de matrices de coordenadas a partir de una secuencia de arreglos de coordenadas unidimensionales. Con indexing 'xy' (el valor predeterminado), las dos primeras entradas se tratan como coordenadas cartesianas y sus ejes de salida se intercambian; con 'ij' se utiliza la indexación de estilo matricial. La implementación se corresponde con el equivalente de NumPy con copy=True y sparse=False.

numpy.ones(shape: int | tuple[int, ...], *, dtype: int = float) ndarray

Devuelve un nuevo arreglo de forma shape y dtype dtype lleno de unos.

numpy.zeros(shape: int | tuple[int, ...], *, dtype: int = float) ndarray

Devuelve un nuevo arreglo de forma shape y dtype dtype lleno de ceros.

Inspección / impresión

numpy.get_printoptions() dict

Devuelve las opciones actuales de impresión de arreglos como un diccionario con las claves threshold y edgeitems.

numpy.set_printoptions(*, threshold: int | None = None, edgeitems: int | None = None) None

Establece las opciones de impresión de arreglos. threshold es el número máximo de elementos del arreglo que se imprimen por completo; edgeitems es el número de elementos mostrados en cada extremo de un eje cuando el arreglo se resume.

numpy.ndinfo(array: ndarray) None

Imprime información de diagnóstico (forma, strides, dtype, itemsize, …) sobre array.

numpy.size(a: ndarray, *, axis: int | None = None) int

Devuelve el número de elementos de a a lo largo de axis; si axis es None, devuelve el número total de elementos (el producto de ndarray.shape).

Comparación

numpy.clip(a: ndarray | int | float, a_min: ndarray | int | float, a_max: ndarray | int | float) ndarray | int | float

Recorta los valores de a de modo que a_min <= result <= a_max. Equivalente a maximum(a_min, minimum(a, a_max)); la difusión sigue las mismas reglas que minimum.

numpy.equal(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | bool

x1 == x2 elemento a elemento; devuelve un ndarray booleano (o un escalar bool si ambas entradas son escalares). Se proporciona por portabilidad: el operador == sobre arreglos da el mismo resultado.

numpy.not_equal(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | bool

x1 != x2 elemento a elemento; la contraparte booleana de equal.

numpy.isfinite(x: ndarray | int | float) ndarray | bool

Devuelve un arreglo (o escalar) booleano que es True donde la entrada es finita. Las entradas enteras siempre son finitas.

numpy.isinf(x: ndarray | int | float) ndarray | bool

Devuelve un arreglo (o escalar) booleano que es True donde la entrada es infinita. Las entradas enteras nunca son infinitas.

numpy.maximum(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | int | float

Máximo elemento a elemento de dos arreglos / escalares. Los argumentos se difunden conjuntamente; si los dtypes difieren, la salida se promueve.

numpy.minimum(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | int | float

Mínimo elemento a elemento de dos arreglos / escalares; contraparte de maximum.

numpy.nonzero(a: ndarray) tuple[ndarray, ...]

Devuelve una tupla de ndarray, uno por cada dimensión de a, que contiene los índices de los elementos distintos de cero de a.

numpy.where(condition: ndarray | int | float, x: ndarray | int | float, y: ndarray | int | float) ndarray

Devuelve un ndarray cuyos elementos provienen de x donde condition es verdadero, y de y en caso contrario. Las tres entradas se difunden conjuntamente; el dtype de salida es la promoción de x e y.

Reducciones numéricas

numpy.all(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | bool

Comprueba si todos los elementos a lo largo de axis se evalúan como True. Con axis=None (el valor predeterminado) se comprueba el arreglo aplanado y se devuelve un único bool.

numpy.any(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | bool

Comprueba si algún elemento a lo largo de axis se evalúa como True. Con axis=None se comprueba el arreglo aplanado.

numpy.argmax(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | int

Devuelve el índice del elemento máximo a lo largo de axis. Con axis=None el arreglo se aplana y se devuelve un único entero.

numpy.argmin(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | int

Devuelve el índice del elemento mínimo a lo largo de axis. Con axis=None el arreglo se aplana y se devuelve un único entero.

numpy.argsort(a: ndarray, *, axis: int = -1) ndarray

Devuelve un ndarray de índices enteros sin signo cuyas entradas ordenan a en orden ascendente a lo largo de axis. El dtype de salida es uint16, por lo que ningún eje puede superar los 65535 elementos. axis=None no se admite.

numpy.cross(a: ndarray, b: ndarray) ndarray

Devuelve el producto vectorial de dos arreglos 1-D de longitud 3.

numpy.diff(a: ndarray, *, n: int = 1, axis: int = -1) ndarray

Devuelve la n-ésima diferencia hacia adelante discreta de a a lo largo de axis. n debe estar en 0..9 (la plantilla de diferenciación se almacena en un int8); la longitud de axis se reduce en n. Las palabras clave prepend y append de numpy no están implementadas.

numpy.flip(a: ndarray, *, axis: int | None = None) ndarray

Devuelve un nuevo arreglo con el orden de los elementos invertido a lo largo de axis; con axis=None el arreglo se invierte a lo largo de todos los ejes.

numpy.max(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float

Devuelve el elemento máximo a lo largo de axis. Con axis=None (el valor predeterminado) el arreglo aplanado se reduce a un escalar. La palabra clave out de numpy no está implementada.

numpy.min(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float

Devuelve el elemento mínimo a lo largo de axis; contraparte de max.

numpy.mean(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | float

Devuelve la media aritmética a lo largo de axis. Con axis=None (el valor predeterminado) se devuelve la media del arreglo aplanado como un float.

numpy.median(a: ndarray, *, axis: int | None = None) ndarray | float

Devuelve la mediana a lo largo de axis. Con axis=None el arreglo se aplana primero. El dtype de salida es siempre float.

numpy.roll(a: ndarray, shift: int, *, axis: int | None = None) ndarray

Devuelve a con sus elementos rotados (desplazados cíclicamente) en shift posiciones. Con axis=None (el valor predeterminado) el arreglo se aplana primero. Los desplazamientos negativos rotan en la dirección opuesta.

numpy.sort(a: ndarray, *, axis: int = -1) ndarray

Devuelve una copia ordenada de a a lo largo de axis usando heap sort. Con axis=None el arreglo se aplana primero. Las palabras clave kind y order de numpy no están implementadas.

numpy.std(a: ndarray | list | tuple, *, axis: int | None = None, ddof: int = 0, keepdims: bool = False) ndarray | float

Devuelve la desviación estándar a lo largo de axis. ddof son los grados de libertad delta: el divisor utilizado es N - ddof.

numpy.sum(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float

Devuelve la suma a lo largo de axis. Con axis=None se devuelve el total del arreglo aplanado como un escalar.

Estadísticas

numpy.bincount(x: ndarray, *, weights: ndarray | None = None, minlength: int | None = None) ndarray

Cuenta el número de apariciones de cada valor en el arreglo unidimensional de enteros no negativos x. El dtype de x debe ser uint8 o uint16. Si se proporciona weights, cada entrada de x aporta su peso correspondiente en lugar de 1 y la salida es de dtype float; de lo contrario, la salida es de dtype uint16. Si se proporciona minlength, el arreglo de salida tiene al menos esa cantidad de elementos (las entradas adicionales son cero).

numpy.trace(m: ndarray) int | float

Devuelve la suma de los elementos diagonales de la matriz cuadrada m. El tipo de retorno sigue el dtype de m (los arreglos enteros producen un entero, los arreglos float un float).

Transformación

numpy.compress(condition: ndarray | list | tuple, a: ndarray, *, axis: int | None = None) ndarray

Devuelve segmentos de a seleccionados a lo largo de axis mediante la condición booleana condition. Con axis=None se utiliza el arreglo aplanado.

numpy.delete(a: ndarray, indices: int | ndarray | list | tuple | range, *, axis: int | None = None) ndarray

Devuelve una copia de a con las entradas en indices eliminadas a lo largo de axis. Con axis=None el arreglo se aplana primero. Los índices negativos cuentan desde el final de axis; indices se ordena internamente antes de la eliminación.

numpy.dot(m1: ndarray, m2: ndarray) ndarray | float

Devuelve el producto escalar de dos arreglos. Para dos arreglos 1-D este es el producto interno (un escalar float). Para arreglos 2-D esta es la multiplicación de matrices; las dimensiones internas deben coincidir. El resultado es siempre de dtype float.

Aproximación

numpy.interp(x: ndarray, xp: ndarray, fp: ndarray, *, left: float | None = None, right: float | None = None) ndarray

Interpolación lineal unidimensional. xp debe ser un arreglo 1-D monótonamente creciente de valores independientes; fp contiene los valores dependientes correspondientes; x son los puntos en los que se evalúa el interpolante. left y right anulan el valor devuelto para x < xp[0] y x > xp[-1] respectivamente (valores predeterminados: fp[0] y fp[-1]).

numpy.trapz(y: ndarray, x: ndarray | None = None, dx: float = 1.0) float

Integra y usando la regla trapezoidal compuesta. Si se proporciona x, este aporta las posiciones de muestreo correspondientes a y; de lo contrario, se utiliza el espaciado dx. y (y x) deben ser 1-D.

Selección

numpy.take(a: ndarray, indices: ndarray | list | tuple, *, axis: int | None = None, out: ndarray | None = None, mode: str | None = None) ndarray

Toma elementos de a en los indices dados a lo largo de axis. Con axis=None se utiliza el arreglo aplanado. mode selecciona el comportamiento fuera de límites: "raise" (predeterminado: lanza ValueError), "wrap" (módulo la longitud del eje) o "clip" (recorta al rango válido; no se permiten índices negativos). Si se proporciona out, el resultado se escribe en él.

A nivel de bits

numpy.bitwise_and(x1: ndarray, x2: ndarray) ndarray

AND a nivel de bits elemento a elemento de dos arreglos enteros; se admite la difusión. Un dtype no entero lanza una excepción.

numpy.bitwise_or(x1: ndarray, x2: ndarray) ndarray

OR a nivel de bits elemento a elemento de dos arreglos enteros.

numpy.bitwise_xor(x1: ndarray, x2: ndarray) ndarray

XOR a nivel de bits elemento a elemento de dos arreglos enteros.

numpy.left_shift(x1: ndarray, x2: ndarray) ndarray

Desplazamiento a nivel de bits elemento a elemento de x1 hacia la izquierda en x2 bits; ambos arreglos deben tener dtype entero.

numpy.right_shift(x1: ndarray, x2: ndarray) ndarray

Desplazamiento a nivel de bits elemento a elemento de x1 hacia la derecha en x2 bits; ambos arreglos deben tener dtype entero.

Filtrado

numpy.convolve(a: ndarray, v: ndarray) ndarray

Devuelve la convolución lineal discreta de dos arreglos 1-D. Solo se admite el modo "full"; la palabra clave mode de numpy no se acepta (otros modos pueden obtenerse segmentando el resultado completo). La longitud de salida es len(a) + len(v) - 1.

Polinómico

numpy.polyfit(x: ndarray | list | tuple, y: ndarray | list | tuple, deg: int) ndarray
numpy.polyfit(y: ndarray | list | tuple, deg: int) ndarray

Ajusta un polinomio de grado deg a los puntos de datos (x, y) por mínimos cuadrados y devuelve los coeficientes del polinomio (de mayor grado primero). Si se omite x, se utiliza range(len(y)). Lanza ValueError si las longitudes de x e y difieren.

numpy.polyval(p: ndarray | list | tuple, x: ndarray | list | tuple | int | float) ndarray | float

Evalúa el polinomio cuyos coeficientes son p (de mayor grado primero) en x. Si x es un escalar se devuelve un float; de lo contrario, un ndarray.

E/S

numpy.load(file: str) ndarray

Lee un arreglo previamente escrito con save desde file (el formato .npy independiente de la plataforma de numpy). La endianidad se convierte sobre la marcha si el orden de bytes del archivo difiere del del host.

numpy.loadtxt(file: str, *, delimiter: str | None = None, comments: str = '#', max_rows: int = -1, usecols: int | ndarray | list | tuple | None = None, dtype: int = float, skiprows: int = 0) ndarray

Lee datos numéricos de un archivo de texto file y los devuelve como un ndarray. delimiter tiene como valor predeterminado el espacio en blanco; comments es el marcador de comentario de línea; max_rows limita el número de filas de datos leídas (-1 para todas); usecols selecciona columnas por índice; skiprows omite esa cantidad de filas iniciales. Si dtype no es float, los valores se convierten mediante redondeo.

numpy.save(file: str, a: ndarray) None

Guarda a en file en el formato .npy independiente de la plataforma de numpy.

numpy.savetxt(file: str, a: ndarray, *, delimiter: str = ' ', header: str | None = None, footer: str | None = None, comments: str = '# ') None

Escribe a en file como texto. delimiter separa los valores dentro de una fila; header y footer, si se proporcionan, se escriben antes/después de los datos, cada uno precedido por comments. Los valores se escriben como coma flotante.

Auxiliares para complejos

Estas funciones solo están disponibles cuando ulab se compiló con soporte para complejos (ULAB_SUPPORTS_COMPLEX).

numpy.real(val: ndarray) ndarray

Devuelve la parte real de val. Para una entrada de dtype real, devuelve una copia que conserva el dtype; para una entrada compleja, devuelve un ndarray float.

numpy.imag(val: ndarray) ndarray

Devuelve la parte imaginaria de val. Para una entrada de dtype real, devuelve un arreglo de ceros con el mismo dtype; para una entrada compleja, devuelve un ndarray float.

numpy.conjugate(val: ndarray | complex | int | float) ndarray | complex | int | float

Devuelve el conjugado complejo de val. Las entradas con valores reales se devuelven sin cambios.

numpy.sort_complex(a: ndarray) ndarray

Ordena el arreglo 1-D a primero por parte real y luego por parte imaginaria. El resultado es siempre de dtype complejo, incluso si a tenía valores reales.

Funciones universales

Funciones matemáticas elemento a elemento. Cada una acepta un escalar o un ndarray y devuelve un resultado de forma coincidente (un escalar float para entrada escalar, un ndarray para entrada de arreglo). Cuando se llama con un ndarray, el resultado es un nuevo ndarray de coma flotante; se puede pasar una palabra clave out opcional para escribir el resultado en un ndarray float preasignado del mismo tamaño.

numpy.acos(x: ndarray | float, /) ndarray | float

Calcula el coseno inverso (arcocoseno) de cada elemento de x; el resultado está en radianes.

numpy.acosh(x: ndarray | float, /) ndarray | float

Calcula el coseno hiperbólico inverso de cada elemento de x.

numpy.arctan2(y: ndarray | float, x: ndarray | float, /) ndarray | float

Calcula la tangente inversa de dos argumentos atan2(y, x) elemento a elemento; admite la difusión entre las dos entradas.

numpy.around(x: ndarray, /, decimals: int = 0) ndarray

Redondea los elementos del ndarray x al número de decimals indicado; el primer argumento debe ser un ndarray.

numpy.asin(x: ndarray | float, /) ndarray | float

Calcula el seno inverso (arcoseno) de cada elemento de x; el resultado está en radianes.

numpy.asinh(x: ndarray | float, /) ndarray | float

Calcula el seno hiperbólico inverso de cada elemento de x.

numpy.atan(x: ndarray | float, /) ndarray | float

Calcula la tangente inversa (arcotangente) de cada elemento de x; el resultado está en radianes.

numpy.atanh(x: ndarray | float, /) ndarray | float

Calcula la tangente hiperbólica inversa de cada elemento de x.

numpy.ceil(x: ndarray | float, /) ndarray | float

Calcula el techo (el entero más pequeño no menor que el valor) de cada elemento de x.

numpy.cos(x: ndarray | float, /) ndarray | float

Calcula el coseno de cada elemento de x (en radianes).

numpy.cosh(x: ndarray | float, /) ndarray | float

Calcula el coseno hiperbólico de cada elemento de x.

numpy.degrees(x: ndarray | float, /) ndarray | float

Convierte cada elemento de x de radianes a grados.

numpy.exp(x: ndarray | float, /) ndarray | float

Calcula la exponencial e**x de cada elemento de x; puede devolver un ndarray complejo cuando se le da una entrada compleja (si el soporte para complejos está habilitado).

numpy.expm1(x: ndarray | float, /) ndarray | float

Calcula exp(x) - 1 de cada elemento de x con mayor precisión cerca de cero.

numpy.floor(x: ndarray | float, /) ndarray | float

Calcula el piso (el entero más grande no mayor que el valor) de cada elemento de x.

numpy.log(x: ndarray | float, /) ndarray | float

Calcula el logaritmo natural de cada elemento de x.

numpy.log10(x: ndarray | float, /) ndarray | float

Calcula el logaritmo en base 10 de cada elemento de x.

numpy.log2(x: ndarray | float, /) ndarray | float

Calcula el logaritmo en base 2 de cada elemento de x.

numpy.radians(x: ndarray | float, /) ndarray | float

Convierte cada elemento de x de grados a radianes.

numpy.sin(x: ndarray | float, /) ndarray | float

Calcula el seno de cada elemento de x (en radianes).

numpy.sinc(x: ndarray | float, /) ndarray | float

Calcula la función sinc normalizada sin(pi*x) / (pi*x) de cada elemento de x.

numpy.sinh(x: ndarray | float, /) ndarray | float

Calcula el seno hiperbólico de cada elemento de x.

numpy.sqrt(x: ndarray | float, /, *, dtype: int = float) ndarray | float

Calcula la raíz cuadrada de cada elemento de x; pase dtype=numpy.complex para obtener resultados complejos en entradas reales negativas (si el soporte para complejos está habilitado).

numpy.tan(x: ndarray | float, /) ndarray | float

Calcula la tangente de cada elemento de x (en radianes).

numpy.tanh(x: ndarray | float, /) ndarray | float

Calcula la tangente hiperbólica de cada elemento de x.

numpy.vectorize(f: Callable[[float], float], /, *, otypes: int | None = None) Callable

Devuelve un invocable que aplica la función de Python f elemento a elemento a un escalar, iterable o ndarray; otypes selecciona el dtype de salida (float por defecto).

Constantes

numpy.e: float

El número de Euler \(e \approx 2.71828\).

numpy.pi: float

\(\pi \approx 3.14159\).

numpy.inf: float

Infinito positivo de coma flotante IEEE-754.

numpy.nan: float

«No es un número» (NaN) de coma flotante IEEE-754.

numpy.bool: int

Código de dtype para arreglos booleanos (almacenados como uint8).

numpy.uint8: int

Código de dtype para arreglos de enteros sin signo de 8 bits.

numpy.int8: int

Código de dtype para arreglos de enteros con signo de 8 bits.

numpy.uint16: int

Código de dtype para arreglos de enteros sin signo de 16 bits.

numpy.int16: int

Código de dtype para arreglos de enteros con signo de 16 bits.

numpy.float: int

Código de dtype para arreglos de coma flotante de 32 bits.