Effiziente Berechnung einer euklidischen Distanzmatrix mit Numpy

Ich habe eine Reihe von Punkten im zweidimensionalen Raum und muss den Abstand zwischen den Punkten berechnen.

Ich habe eine relativ kleine Anzahl von Punkten, vielleicht höchstens 100. Aber da ich es oft und schnell tun muss, um die Beziehungen zwischen diesen sich bewegenden Punkten zu bestimmen, und mir bewusst bin, dass das Durchlaufen der Punkte genauso schlecht sein kann Als O (n ^ 2) -Komplexität suche ich nach Möglichkeiten, die Matrixmagie (oder Scipy) von Numpy auszunutzen.

Wie es in meinem Code steht, werden die Koordinaten jedes Objekts in seiner Klasse gespeichert. Ich könnte sie jedoch auch in einem Numpy-Array aktualisieren, wenn ich die Klassenkoordinate aktualisiere.

class Cell(object):
    """Represents one object in the field."""
    def __init__(self,id,x=0,y=0):
        self.m_id = id
        self.m_x = x
        self.m_y = y

Es fällt mir ein, eine euklidische Distanzmatrix zu erstellen, um eine Duplizierung zu verhindern, aber vielleicht haben Sie eine klügere Datenstruktur.

Ich bin auch offen für Hinweise auf raffinierte Algorithmen.

Ich stelle auch fest, dass es ähnliche Fragen gibt, die sich mit euklidischer Distanz und Numpie befassen, aber keine, die sich direkt mit dieser Frage der effizienten Auffüllung einer Volldistanzmatrix befassen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage