Генерация случайных 2D координат - PullRequest
0 голосов
/ 31 октября 2019

Мне нужно сгенерировать 2D случайные координаты и найти расстояние от одного центрального местоположения.

import numpy as np
import matplotlib.pyplot as plt

coords = np.random.random_integers(0,50,10)

print(coords)

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Для выборки координат вы можете также отдельно выбрать x- и y-координаты:

import numpy as np
import matplotlib.pyplot as plt

x = np.random.randint(0, 50, 10)
y = np.random.randint(0, 50, 10)

plt.scatter(x, y)
plt.show()

Выходные данные выше должны быть точечной диаграммой с 10 выбранными точками. Затем вы можете определить расстояние всех точек до определенной центральной точки (x0, y0) следующим образом:

x0, y0 = 25, 25 
d = np.sqrt((x0 - x)**2 + (y0 - y)**2)
print(d)

Где d содержит расстояния до центральной точки, а d[i] - это расстояние (x[i], y[i]) до (x0, y0).

0 голосов
/ 31 октября 2019

Есть некоторые проблемы с вашей линией рассуждений, более того, ваш вопрос не очень ясен.

Во-первых, вам нужны обе координаты для точки. На данный момент вы создаете только 10 случайных значений. Они х? у? Вы хотите только целочисленные координаты? Я предположил, что, поскольку вы использовали устаревший целочисленный генератор случайных значений. В ответ вы спрашиваете расстояние от центрального места, что именно вы имеете в виду? Вы хотите расстояние от каждой точки до этого места? В среднем? Я пытался ответить на ваш вопрос, рассматривая центральное местоположение как центр тяжести случайных точек.

Я создал 10 точек.

Я рассчитал центр тяжести с координатами xm и ym.

В этом случае для вычисления центроида вам нужно просто вычислить среднее значение ваших координат x и y.

Если вы хотите определенное местоположение, вам просто нужно поставить числа на xm и ym.

После того, как я создал список «d1», где я могу сохранить расстояние для каждой точки до центроида. Формула в цикле «for» - это просто евклидово расстояние.

import numpy as np
import matplotlib.pyplot as plt

num_points=10
coords_x=np.random.randint(0,50,num_points)
coords_y=np.random.randint(0,50,num_points)

xm=np.average(coords_x)
ym=np.average(coords_y)

d1=((coords_x-xm)**2+(coords_y-ym)**2)**0.5

print(d1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...