“Schnellste Möglichkeit, Paar weise Entfernungen Python zu berechnen” Code-Antworten

Schnellste Möglichkeit, Paar weise Entfernungen Python zu berechnen

#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

Schnellste Möglichkeit, Paar weise Entfernungen Python zu berechnen

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

Ähnliche Antworten wie “Schnellste Möglichkeit, Paar weise Entfernungen Python zu berechnen”

Fragen ähnlich wie “Schnellste Möglichkeit, Paar weise Entfernungen Python zu berechnen”

Weitere verwandte Antworten zu “Schnellste Möglichkeit, Paar weise Entfernungen Python zu berechnen” auf Python

Durchsuchen Sie beliebte Code-Antworten nach Sprache

Durchsuchen Sie andere Codesprachen