- Найти несколько значений в массиве Python, близких к заданному числу
- Найти в массиве элемент, самый близкий по величине к данному числу
- Python поиск ближайшего значения?
- Войдите, чтобы написать ответ
- Почему происходит вечная обработка request запроса через proxy в python?
- Как найти в списке наиболее близкое значение Python?
- Войдите, чтобы написать ответ
- Почему происходит вечная обработка request запроса через proxy в python?
- Найти ближайшее к заданному значение
Найти несколько значений в массиве Python, близких к заданному числу
Используя Python 2.7, у меня есть массив значений от ~ 0.000 до ~ 360.000 несколько раз. Я пытаюсь вернуть все индексы массива со значениями, близкими к 147.010 (даже повторяющиеся значения), поэтому позже я могу использовать каждый из этих индексов. Например, меньшая выборка из одного массива:
array([ 146.749, 147.249, 147.749, 146.749, 147.249, 147.749, 146.749, 147.263, 147.749, 146.472, 147.469, 148.471])
Я пробовал это: min(range(len(array)), key=lambda i: abs(array[i]-some_value)) но это возвращает только один индекс, когда требуется несколько индексов. Я посмотрел, но не нашел аналогичного вопроса или ответа. Спасибо за любую помощь.
проблема в том, что вы пытаетесь найти ближайший предмет, но несколько раз, так сколько вы хотите? потому что, если, например, каждый раз, когда мы находим ближайший, мы удаляем его из списка, то мы можем продолжить и так далее, но нужно установить предел, в противном случае все получится со всеми значениями в конце .
для дубликатов это просто, это индекс всех значений, равных ближайшим только что найденным, и так далее.
По заданному массиву значений найдите все значения из массива, ближайшего к заданному пользователю номеру. Для всех близких значений, которые найдет код, верните эти индексы.
@WXNerd Означает ли «самый близкий» буквально «самый близкий» или, может быть, «в некотором интервале допуска»? Судя по предоставленным вами значениям, это может быть последнее.
После получения дополнительной информации о проекте кажется, что лучшим вариантом будет разбить массив на несколько массивов, а затем найти ближайшее значение из числа, заданного пользователем, для каждого меньшего массива.
Найти в массиве элемент, самый близкий по величине к данному числу
Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу.
В первой строке содержатся список чисел — элементы массива (целые числа, не превосходящие 1000
Во второй строке вводится одно целое число x
, не превосходящее 1000
Вывести значение элемента массива, ближайшего к x
. Если таких чисел несколько, выведите любое из них.
a, n, find_num = [int(i) for i in input().split()], int(input()), 100 for i in range(len(a)): if a[i] n: find_num = -find_num else: find_num = find_num + 0 if a[i] >= n and a[i] - n find_num - n: find_num = a[i] elif a[i] n and find_num - n a[i] - n: find_num = a[i] print(find_num)
Найти в массиве элемент, самый близкий по величине к заданному числу
Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу.
Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу
Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу
Найти в массиве элемент, самый близкий по величине к заданному числу
Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу.
Найти в массиве элемент самый близкий к заданному числу
Изучаю новые возможности PascalABC.NET и переделал задание по нахождению ближайшего из списка.
poiuytjhjhjjjjj, Опишите словами алгоритм, который Вы используете. Мне он не понятен. Например по моему совершенно бессмысленная строка кода
Сообщение от poiuytjhjhjjjjj
def nearest_value(items, value): '''Поиск ближайшего значения до value в списке items''' found = items[0] # найденное значение (первоначально первое) for item in items: if abs(item - value) abs(found - value): found = item return found
Я начинающий так что если тебе не трудно можешь объяснить этот код?
Добавлено через 2 минуты
Можешь объяснить свой код? Я начинающий просто.
Сообщение от kamnii
1 2 3 4 5 6 7 8 9 10 11 12 13
items = [1,2,3,4,5] # список чисел value = 4.2 # число к которому найти ближайшее def nearest_value(items, value): '''Поиск ближайшего значения до value в списке items''' found = items[0] # принимаем допущение что ближайшее число к искомому первое в списке (с индексом 0) for item in items: # для каждого элемента (item) из items (т.е. попеременно item=1, item=2..) # проверяем условие если разница между item value по модулю меньше разницы found и value, то if abs(item - value) abs(found - value): # если условие истинно (True) found = item # меняем значение нашего допущения на item (т.е. item оказался ближе к искомому значению) return found # возвращаем ближайшее значение до value в списке items print(f'Ближайшее число к в списке является' )
Добавлено через 41 минуту
Как вариант для собственной тренировки:
items = [1,2,3,4,5] # список чисел value = 4.2 # число к которому найти ближайшее def nearest_value(items, value): abs_list = list(map(lambda item: abs(item - value), items)) # создаем список значений разницы item - value по модулю return items[abs_list.index(min(abs_list))] # находим индекс минимальной разницы и по этому индексу возвращаем элемент из items print(nearest_value(items, value))
Python поиск ближайшего значения?
Вам даны список значений в виде множества (Set) и значение, относительно которого, надо найти ближайшее.
Несколько уточнений:
Если 2 числа находятся на одинаковом расстоянии — необходимо выбрать наименьшее из них;
Ряд чисел всегда не пустой, т.е. размер >= 1;
Переданное значение может быть в этом ряде, а значит оно и является ответом;
В ряде могут быть как положительные, так и отрицательные числа, но они всегда целые;
Ряд не отсортирован и состоит из уникальных чисел.
def nearest_value(values: set, one: int) -> int: return min(values, key=lambda n: (abs(one - n), n))
Не понял.
как я понимаю, min ищет минимальное значение в values, ключом мы выполняем предварительное действие abs(one — n), то есть ищем в values минимальное абсолютное значение разницы. А вот второе n там зачем?
Taler_Du, второе — на случай, когда первое одинаково. Например, values = , one = 5.
abs(one — n) даст (4, 1, 1, 2), получили 2 минимальных. Для разрешения такого случая и передаем 2-е число — само значение, т.е. сравнение будет между кортежами (1, 4) и (1, 6), из которых меньшим будет первый, и результатом всей операции будет 4.
Сперва кажется что достаточно выражения abs(one — n),
но тогда не выполняется условие «Если 2 числа находятся на одинаковом расстоянии — необходимо выбрать наименьшее из них»,
например set и one = -1
Здесь одинаковая разница в 1, но выбрать нужно минимальное, т.е. -2
Именно для этой цели нужно сравнивать не только разницу, но и номинал из множества. В вашем коде это сделано через кортеж, а можно и списком
min(values, key=lambda n: [abs(one — n), n])
Или же можно отсортировать множество, тогда будет достаточно abs(one — n), т.к. при одинаковых разностях он выберет первое значение коллекции, а это будет меньшее значение
min(sorted(values), key=lambda n: abs(one — n))
min(values, key=lambda n: [abs(one — n), n])
зачем тут n после запятой, для чего она нужна?
Войдите, чтобы написать ответ
Почему происходит вечная обработка request запроса через proxy в python?
Как найти в списке наиболее близкое значение Python?
Есть список —
a = [‘2020-07-30’, ‘2020-07-31’, ‘2020-07-31’, ‘2020-07-31’, ‘2020-08-04’, ‘2020-08-05’, ‘2020-08-06’, ‘2020-08-06’, ‘2020-08-08’, ‘2020-08-08’]
И есть 2 переменные
b = ‘2020-07-27’
c = ‘2020-08-07’
Надо в переменную b1 записать самое близкое значение к переменной b из списка, то есть — 2020-07-30 либо 2020-08-08 не важно.
А в переменную c1 записать самое близкое значение к переменной c из списка, то есть — 2020-08-06 либо
ab = a[:] ac = a[:] ab.append(b) ac.append(c) ab.sort() ac.sort() ab_index = ab.index(b)-1 if ab.index(b) > 0 else 0 ac_index = ac.index(c)-1 if ac.index(c) > 0 else 0 print(ab[ab_index]) print(ac[ac_index])
ну или +1 с проверкой на конец списка
Как то сложно все. Мне кажется — можно проще. По сути — две строки.
Для полноты картины добавил еще и третий пример.
import numpy as np a = ['2020-07-30', '2020-07-31', '2020-07-31', '2020-07-31', '2020-08-04', '2020-08-05', '2020-08-06', '2020-08-06', '2020-08-08', '2020-08-08'] b = '2020-07-27' c = '2020-08-07' d = '2020-08-02' date = np.array(a, dtype=np.datetime64) b1=a[np.argmin(np.abs(date-np.array(b,dtype=np.datetime64)))] c1=a[np.argmin(np.abs(date-np.array(c,dtype=np.datetime64)))] d1=a[np.argmin(np.abs(date-np.array(d,dtype=np.datetime64)))] print (b,'->',b1) print (c,'->',c1) print (d,'->',d1)
2020-07-27 -> 2020-07-30 2020-08-07 -> 2020-08-06 2020-08-02 -> 2020-07-31
import datetime def convert_string_to_date(string: str): return datetime.datetime.strptime(string, '%Y-%m-%d').date() def get_near_date(date, date_list): date_list_desc = sorted(date_list, reverse=True) first_try = [date > i for i in date_list_desc] if True in first_try: return date_list_desc[first_try.index(True)] date_list_asc = sorted(date_list, reverse=False) second_try = [date < i for i in date_list_asc] if True in second_try: return date_list_asc[second_try.index(True)] a = ['2020-07-30', '2020-07-31', '2020-07-31', '2020-07-31', '2020-08-04', '2020-08-05', '2020-08-06', '2020-08-06', '2020-08-08', '2020-08-08'] a = [convert_string_to_date(i) for i in a] b = convert_string_to_date('2020-07-27') c = convert_string_to_date('2020-08-07') print(get_near_date(b, a)) # 2020-07-30 print(get_near_date(c, a)) # 2020-08-06
Войдите, чтобы написать ответ
Почему происходит вечная обработка request запроса через proxy в python?
Найти ближайшее к заданному значение
Есть такая задача:
Find the nearest value to the given one.
You are given a list of values as set form and a value for which you need to find the nearest one.
For example, we have the following set of numbers: 4, 7, 10, 11, 12, 17, and we need to find the nearest value to the number 9. If we sort this set in the ascending order, then to the left of number 9 will be number 7 and to the right - will be number 10. But 10 is closer than 7, which means that the correct answer is 10.
A few clarifications:
If 2 numbers are at the same distance, you need to choose the smallest one;
The set of numbers is always non-empty, i.e. the size is >=1;
The given value can be in this set, which means that it’s the answer;
The set can contain both positive and negative numbers, but they are always integers;
The set isn’t sorted and consists of unique numbers.
Input: Two arguments. A list of values in the set form. The sought value is an int.
Output: Int.
Example:
nearest_value(, 9) == 10
nearest_value(, 8) == 7
Попыталась решить вот так:
def nearest_value(values: set, one: int) -> int: given_value = one absolute_difference_function = lambda list_value : abs(list_value - one) closest_value = min(list(values), key=absolute_difference_function) return closest_value
Помогите пжл прописать условие на случай, если число в one - отрицательное, например nearest_value([0,-2],-1) - см скрин
Не понимаю, как это сделать