Articles of vectorización

Cálculo eficiente de la función de elementos en Python

Tengo el siguiente problema de optimización. Dados dos np.arrays X , Y y una función K me gustaría calcular lo más rápido posible la matriz de incidencia gram_matrix donde el (i,j)-th elemento se calcula como K(X[i],Y[j]) . Aquí hay una implementación que utiliza bucles forados nesteds, que se reconocen como los más lentos para resolver […]

Vectorizar la adición en la matriz indexada por otra matriz

Estoy tratando de obtener una versión vectorizada rápida del siguiente bucle: for i in xrange(N1): A[y[i]] -= B[i,:] Aquí A.shape = (N2,N3) , y.shape = (N1) con y tomando valores en [0,N2[ , B.shape = (N1,N3) . Puedes pensar en entradas de y siendo índices en filas de A Aquí N1 es grande, N2 es […]

Calcular histogtwigs a lo largo del eje.

¿Hay una manera de calcular muchos histogtwigs a lo largo de un eje de una matriz nD? El método que actualmente tengo usa un bucle for para iterar sobre todos los demás ejes y calcular un numpy.histogram() para cada matriz 1D resultante: import numpy import itertools data = numpy.random.rand(4, 5, 6) # axis=-1, place `200001` […]

¿Cómo puedo arreglar y optimizar esta pieza muy simple del código de “Juego de la vida” aprovechando la funcionalidad de NumPy?

import numpy as np from matplotlib import pyplot as plt from matplotlib import animation from random import randint arraySize = 50 Z = np.array([[randint(0, 1) for x in range(arraySize)] for y in range(arraySize)]) def computeNeighbours(Z): rows, cols = len(Z), len(Z[0]) N = np.zeros(np.shape(Z)) for x in range(rows): for y in range(cols): Q = [q for […]

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 […]