Python Выберите точки данных, которые находятся на определенном евклидовом расстоянии от других точек данных - PullRequest
0 голосов
/ 14 февраля 2019

Допустим, у меня есть массив данных и 3 других массива, соответствующих местоположениям x, y и z каждой точки данных в пространстве

data = np.random.random(10000)
x = np.random.random(10000)
y = np.random.random(10000)
z = np.random.random(10000)

Теперь я хочу получить подмножествоточки данных, которые соответствуют некоторым критериям.

В частности, я хочу подмножество точек данных, которые
a) имеют значение, превышающее некоторый порог t1

b) больше, чем расстояние d от точек данныхкоторые имеют значение больше t2

Как эффективный способ сделать это?

1 Ответ

0 голосов
/ 14 февраля 2019

Я бы использовал умножение простой матрицы и сравнивал бы с квадратным расстоянием:

data = np.random.random(10000)
x = np.random.random(10000)
y = np.random.random(10000)
z = np.random.random(10000)
position = np.vstack((x,y,z)).T
t1 = 0.5
t2 = 0.3
dmin = 0.1

m1 = data>t1
m2 = (np.matmul(position[m1], position[data>t2].T) > dmin**2).all(axis=1)
data_filtered = data[m1][m2]
...