Я узнал, что numpy медленнее для отдельных элементов доступа для очень большой матрицы. Следующая часть кода занимает около 7-8 минут. Размер матрицы составляет около 3000 * 3000numpy 2D matrix - Как улучшить производительность в этом случае?
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
Я в основном пытаюсь построить матрицу смежности для графа, который состоит из около 3000 узлов. Может ли кто-нибудь помочь мне сделать это несколько раз? Или какие-то альтернативы?
Edit: Вот Расстояние функция()
Def Distance(p1,p2):
distance=np.sqrt(np.square(p1[0]-p2[0])+np.square(p1[1]-p2[1]))
return distance
Кстати я передаю координаты как кортежей .. Как и в р [0] = х-координаты и р [1] = y- координат ,
Вы можете совместить это с 'AdjMatrix [AdjMatrix> = радиус] = 0 ', чтобы дублировать код выше, с не Петли Python. – mtrw
Я отредактировал мой вопрос.Пожалуйста, смотрите. @mtrw Не могли бы вы рассказать? Прошу прощения .. Я не очень хорошо знаком с python –