У меня есть два списка поплавков. Я пытаюсь вернуть ближайшие элементы из моего основного списка, когда сравниваю его со вторым списком. Так, например, если 1-й элемент vals ближе всего к 3-му элементу mylist, 3-й элемент добавляется в новый список и т. Д.
def closest(lst, K):
vals = []
for val in K:
num = lst[min(range(len(lst)), key = lambda i: abs(lst[i]-val))]
vals.append(num)
return vals
mylist = [-0.25, 0.15, 0, -0.3, 0.45, 0.37]
vals = [0.12, 0.4, -0.32]
print(closest(mylist, vals))
This should return:
[0.15, 0.37, -0.3]
Я получаю эту ошибку:
ValueError Traceback (most recent call last)
<ipython-input-28-8d40bd9d3507> in <module>()
16 return vals
17
---> 18 print(closest(mylist, vals))
19
<ipython-input-28-8d40bd9d3507> in closest(lst, K)
12 vals = []
13 for val in K:
---> 14 num = lst[min(range(len(lst)), key = lambda i: abs(lst[i]-val))]
15 vals.append(num)
16 return vals
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()