“maneira mais rápida de calcular distâncias de pares de pares python” Respostas de código

maneira mais rápida de calcular distâncias de pares de pares python

#my_cython.pyx
import numpy as np
cimport numpy as np
import cython

cdef extern from "math.h":
    double abs(double t)

@cython.wraparound(False)
@cython.boundscheck(False)
def pairwise_distance(np.ndarray[np.double_t, ndim=1] r):
    cdef int i, j, c, size
    cdef np.ndarray[np.double_t, ndim=1] ans
    size = sum(range(1, r.shape[0]+1))
    ans = np.empty(size, dtype=r.dtype)
    c = -1
    for i in range(r.shape[0]):
        for j in range(i, r.shape[0]):
            c += 1
            ans[c] = abs(r[i] - r[j])
    return ans

# main.py
import numpy as np
import random

import pyximport; pyximport.install()
from my_cython import pairwise_distance

r = np.array([random.randrange(1, 1000) for _ in range(0, 1000)], dtype=float)

pairwise_distance(r)
 
Real Raccoon

maneira mais rápida de calcular distâncias de pares de pares python

import numpy as np
import random
import sklearn.metrics.pairwise
import scipy.spatial.distance

r = np.array([random.randrange(1, 1000) for _ in range(0, 1000)])
c = r[:, None]

def option1(r):
    dists = np.abs(r - r[:, None])

def option2(r):
    dists = scipy.spatial.distance.pdist(r, 'cityblock')

def option3(r):
    dists = sklearn.metrics.pairwise.manhattan_distances(r)

In [36]: timeit option1(r)
100 loops, best of 3: 5.31 ms per loop

In [37]: timeit option2(c)
1000 loops, best of 3: 1.84 ms per loop

In [38]: timeit option3(c)
100 loops, best of 3: 11.5 ms per loop
Real Raccoon

Respostas semelhantes a “maneira mais rápida de calcular distâncias de pares de pares python”

Perguntas semelhantes a “maneira mais rápida de calcular distâncias de pares de pares python”

Mais respostas relacionadas para “maneira mais rápida de calcular distâncias de pares de pares python” em Python

Procure respostas de código populares por idioma

Procurar outros idiomas de código