import numpy as np
L = np.array([
[87, 30, 45, 99],
[11, 21, 31, 41],
[560, 47, 85, 328],
[167, 32, 98, 379]
])
Для точки 2 вы можете использовать np.where
, который возвращает массив condition.nonzero (), который указывает, где условие равно True . Затем вы можете поместить этот массив в качестве индекса.
result = L[np.where((L[:,1]>10)&(L[:,1]<100))]
Для данного массива, например arr1
, мы можем использовать следующий метод (я не знаю, лучше ли он, но он работает).
L2 = np.array([
[87, 30, 45, 99],
[11, 21, 31, 41],
[560, 47, 85, 328],
[85, 33, 43, 97]
])
def dist(a):
return np.linalg.norm(L2[0]-a)
distances = np.apply_along_axis(dist, 1, L2)
index = np.ma.MaskedArray(result, result==0).argmin() #remove first element which dist is min (0)
print(L2[index])