Articles of vectorización

Hacer una matriz 2D Numpy de coordenadas

Tengo puntos de datos que representan coordenadas para una matriz 2D (matriz). Los puntos suelen estar cuadriculados, excepto que faltan puntos de datos en algunas posiciones de la cuadrícula. Por ejemplo, considere algunos datos XYZ que encajan en una cuadrícula regular de 0.1 con forma (3, 4). Hay huecos y puntos faltantes, por lo que […]

¿Una forma más rápida de calcular la sum de la diferencia cuadrada entre una imagen (M, N) y una plantilla (3, 3) para la coincidencia de plantillas?

Estoy implementando un algoritmo para la síntesis de textura como se describe aquí . Para esto necesito calcular la sum de las diferencias al cuadrado, una métrica para estimar el error entre la template y las diferentes posiciones en la image . Tengo una implementación de trabajo lento en el lugar siguiente: total_weight = valid_mask.sum() […]

Python Numpy vectoriza nesteds para bucles para combinatoria

Dada una matriz nxn A de números positivos reales, estoy tratando de encontrar el mínimo del máximo del mínimo de todas las combinaciones de tres filas de la matriz 2-d. Usando for-loops, eso sale a algo como esto: import numpy as np n = 100 np.random.seed(2) A = np.random.rand(n,n) global_best = np.inf for i in […]

¿Cómo puedo vectorizar una función que usa valores rezagados de su propia salida?

Lamento la mala frase de la pregunta, pero fue lo mejor que pude hacer. Sé exactamente lo que quiero, pero no exactamente cómo pedirlo. Aquí está la lógica demostrada por un ejemplo: Dos condiciones que toman los valores 1 o 0 disparan una señal que también toma los valores 1 o 0. La condición A […]

Vectorización del CDF normal multivariado (función de densidad acumulada) en Python

¿Cómo puedo vectorizar el CDF normal multivariado (función de densidad acumulada) en Python? Al mirar esta publicación, descubrí que hay una implementación de Fortran de la CDF multivariable que se “trasladó” a Python. Esto significa que puedo evaluar fácilmente el CDF para un caso específico. Sin embargo, estoy teniendo muchos problemas para aplicar esta función […]

¿Escribir funciones que acepten matrices numpy 1-D y 2-D?

Según tengo entendido, las matrices 1-D en números pueden interpretarse como un vector orientado a columnas o como un vector orientado a filas. Por ejemplo, una matriz 1-D con forma (8,) puede verse como una matriz 2-D de forma (1,8) o forma (8,1) según el contexto. El problema que tengo es que las funciones que […]

¿Cómo puedo cambiar mi forma de pensar para “vectorizar mi computación” más que usar “for-loops”?

Esta es definitivamente una pregunta más teórica, pero quería obtener la opinión de otros expertos sobre este tema en SO. La mayor parte de mi progtwigción viene de matrices Numpy últimamente. He estado combinando elementos en dos o más matrices que son diferentes en tamaño. La mayoría de las veces iré a un bucle for […]

clasificación de radios vectorizadas con numpy – ¿puede superar np.sort?

Numpy aún no tiene una clasificación de radix, así que me pregunté si era posible escribir uno usando funciones numpy pre-existentes. Hasta ahora tengo lo siguiente, que sí funciona, pero es aproximadamente 10 veces más lento que el pedido rápido de numpy. Prueba y punto de referencia: a = np.random.randint(0, 1e8, 1e6) assert(np.all(radix_sort(a) == np.sort(a))) […]

¿Cómo vectorizar una función que contiene una sentencia if?

Digamos que tenemos la siguiente función: def f(x, y): if y == 0: return 0 return x/y Esto funciona bien con valores escalares. Desafortunadamente, cuando trato de usar matrices numpy para y la comparación y == 0 se trata como una operación de matriz que produce un error: ————————————————————————— ValueError Traceback (most recent call last) […]

Problema de eficiencia de personalización de la operación vectorizada de numpy.

Tengo una función de python dada a continuación: def myfun(x): if x > 0: return 0 else: return np.exp(x) donde np es la biblioteca numpy . Quiero hacer la función vectorizada en numpy, entonces uso: vec_myfun = np.vectorize(myfun) Hice una prueba para evaluar la eficiencia. Primero genero un vector de 100 números aleatorios: x = […]