Это и будет бинарный поиск, только реализованный более корректно.
Если вы упростите решаемую задачу, вам будет легче найти ошибку.
Распишу ещё раз чуть подробнее:
1) пишете левосторонний бинарный поиск по вот этой статье: https://neerc.ifmo.ru/wiki/index.php?title=%D0%A6%...
2) ищете в массиве 0, получаете позицию в массиве, слева от которой все числа < 0, а справа все числа ≥ 0;
3) сравниваете число в найденной позиции с 5, если оно ≤ 5, то это ваш ответ, в противном случае числа из диапазона [0, 5] в массиве не существует;
4) прикручиваете сверху цикл по строкам матрицы.
Вообще говоря, бинарный поиск обычно применяется для поиска одного числа, а не целого диапазона.
Мне кажется проще всего будет просто поискать самое левое число ≥ 0.
Если оно окажется ≤ 5, то это и есть наш ответ, если же нет, то это означает, что ответа не существует, поскольку поиск вернул нам самое левое (то есть маленькое) число из соответствующих условию ≥ 0.
Про них часто упоминают как о необходимой вещи, но на моей практике основной наблюдаемый эффект от них — чрезмерное число абстракций и абсолютно нечитаемый код.
Возможно они лучше проявляют себя когда проект разрабатывают больше десяти человек или когда в команде большая текучка, например?
Комментарий препода вообще говоря довольно разумный: не надо слепо проектировать базу под абстракцию в вакууме.
Сначала нужно описать бизнес-процесс, который вы автоматизируете, в потом уже на основе этого проектировать базу, если она действительно нужна.
А ну как ваш автосалон сейчас руководствуются в работе просто тетрадкой, куда на определённое время клиентов записывает и им просто хочется эту самую тетрадку в базу превратить, а вы им 10 таблиц со странными связями предлагаете :)
Суровая правда жизни такова — код сам по себе не имеет никакой ценности, насколько бы красив он ни был, ценность появляется лишь когда он делает что-то нужное конкретным людям.
wisgest, всегда сложно делать предположения о намерениях автора, но тостер всё же околоайтишный ресурс, поэтому тег "математика" зачастую не означает, что человеку нужно исключительно математическое решение.
dmshar, сдвиг на константу не влияет на стандартное отклонение.
In [5]: float_data = np.random.normal(loc=5, scale=3, size=100)
In [6]: mean = float_data.mean()
In [7]: mean
Out[7]: 4.896920529973531
In [8]: float_data.std()
Out[8]: 3.305386288077494
In [9]: (float_data - mean).std()
Out[9]: 3.305386288077494
vovak1919, судя по приведённой вами цитате, автор хочет использовать для нормализации только обучающую выборку, чтобы не заглядывать в данные на которых будет проверяться качество.
Если у вас всё написано правильно (именно это я предлагал проверить с помощью keras), то вы можете попробовать уменьшить ошибку добавив нелинейности с помощью функции ReLU вместо сигмоиды.
Размышление через производную можно упростить: не обязательно рассматривать знак второй производной если заметить, что оптимизируемая функция — перевёрнутая парабола, а значит у неё есть только одна точка экстремума, она же максимум.
Andrey Ka, на таких объёмах лучше взять faiss, у нас поиск по базе размером 150кк проходит за те же 50 ms, что fullscan по миллиону, точность тоже хорошая.
Если база не обновляется или хотя бы делает это редко, то ещё можно на hnsw посмотреть, но там надо будет несколько дней индекс строить.
Попробуйте вот эту книжку посмотреть: https://www.ozon.ru/context/detail/id/140074508/