matriz 2D numpy - Como melhorar o desempenho neste caso?

Eu vim a saber que numpy é lento para acessos de elementos individuais para uma matriz muito grande. A parte seguinte do código leva cerca de 7-8 minutos para ser executada. Tamanho da matriz é de cerca de 3000 * 3000

import numpy as np
................
................
ArrayLength=len(Coordinates)
AdjMatrix=np.zeros((len(Angles),len(Angles)))
for x in range(0, Arraylength):
    for y in range(x+1, Arraylength-x):
        distance=Distance(Coordinates[x],Coordinates[y)
            if(distance<=radius)
                AdjMatrix[x][y]=distance
                AdjMatrix[y][x]=distance

Eu estou basicamente tentando construir uma matriz de adjacência para um gráfico que consiste em cerca de 3000 nós. Alguém pode me ajudar a fazer essa maneira insignificante? Ou alguma alternativa?

Edit: Aqui é a função Distance ()

Def Distance(p1,p2):
    distance=np.sqrt(np.square(p1[0]-p2[0])+np.square(p1[1]-p2[1]))
    return distance

A propósito, eu estou passando coordenadas como tuplas. Como em p [0] = coordenada xe p [1] = coordenada y.

questionAnswers(1)

yourAnswerToTheQuestion