Ответы пользователя по тегу Python
  • ValueError: time data '2021-11-21' does not match format '%a %b %d %H:%M:%S %Y'?

    @dmshar
    А вы можете объяснить, что вы тут делаете?
    today.strftime('%Y-%m-%d') - ОК, понятно, дату переводим в строку.
    strptime(today.strftime('%Y-%m-%d')) - ну предположим, строку хотим обратно перевести в формат "datatime". Вот только не указав параметр format вы принимаете формат по умолчанию "%a %b %d %H:%M:%S %Y"
    А теперь главный вопрос -
    strftime("%Y-%m-%d", strptime(today.strftime('%Y-%m-%d'))) - где тут первый параметр - данные, где второй параметр - формат?

    Поэтому могу только подозревать, что вы хотели написать что-то вроде
    today = date.today()
    datetime.strftime( datetime.strptime(today.strftime('%Y-%m-%d'),'%Y-%m-%d'),"%Y-%m-%d")

    который хоть и будет работать, но делать будет все равно что-то абсолютно бессмысленное.
    Ответ написан
    Комментировать
  • В чём ошибка в коде?

    @dmshar
    Во-первых, в том, что он не отформатирован для того, что-бы его могли удобно читать те, кто захочет вам помочь.

    Во-вторых, вам же четко, по английский написана причина ошибки. Еще и показано - в какой именно строке это происходит - но нам вы этого не показали. Как вы думаете, что должно произойти вот в этом фрагменте вашего кода при первом его исполнении?

    for i in range(21):
        day = date_pr.strftime("%A")

    Откуда берется значение date_pr и какое оно в момент исполнения этой команды ?
    Ответ написан
    2 комментария
  • Как в python можно реализовать эмпирическую функцию распределения?

    @dmshar
    Пусть lst - это ваш список. Тогда.
    В зависимости от того, что на самом деле вам надо, можно так:
    plt.hist(lst, histtype='step', cumulative=True, bins=len(lst))

    результат:
    618ec954800d1793865069.png

    Можно так:
    bin_dt, bin_gr = np.histogram(lst, bins=len(lst))
    Y = bin_dt.cumsum()
    for i in range(len(Y)):
        plt.plot([bin_gr[i], bin_gr[i+1]],[Y[i], Y[i]],color='green')


    Результат:
    618ec9cfabd0f489842340.png

    Можно так:
    import seaborn as sns
    sns.kdeplot(lst, cumulative=True)


    Результат:
    618eca10f1413441842508.png
    Ответ написан
  • Программа не запускается не понимаю почему выбивает ошибки?

    @dmshar
    Если main - это имя файла с кодом, используемый вами, то надо писать main.py. А если что-то другое - то объясните предназначение вот этой строки
    from main import collect_data
    Ответ написан
  • Как записать переменные в кол-ве которые ввели в консоль?

    @dmshar
    Вы хоть про основы Python прочитали что-нибудь? Циклы, условные операторы, списки? А если учили основы информатики (школа, класс наверное 7 или 8), то наверняка должны знать, что массив и придуман для того, что-бы не заводить "отдельной переменной" для каждого данного. По сумбурности вопроса очень подозреваю что нет. Как перевести на русский язык фразу "записать переменные в количестве которые ввели в консоль?" - я вообще не знаю. Что значит "записать переменные в количестве"?, что такое "которые ввели в (!!!!) консоль"??? А "в консоль" ввели переменные или все таки их количество? ("В консоль" (куда?) можно "вывести", а вот ввести можно "в консоли" (где?) И смысл от этого меняется кардинально).

    Ваша программа, та что "пишет в консоль", откуда она знает, сколько пар введено? Где она хранит свои данные?
    Что такое n - каждое отдельно вводимое число или предварительно введенное максимальное количество данных?
    Если вы работаете (и что-либо читали про) Python, то должны бы знать, что в нем есть тип данных list, который может наращиваться динамически, и не требует заранее определять максимальное количество своих элементов. Вот, по мере появления нового числа записываете его в список, а если длина списка кратна двум - выводите его два последние элемента в консоль.
    lst=[]
    while True:
        lst.append(int(input()))
        if len(lst)%2==0:
            print(lst[-2],lst[-1])

    Внимание! Программа содержит бесконечный цикл. Но исправить это оставляю вам в качестве домашнего задания.
    Ответ написан
    1 комментарий
  • Почему формат не подходит?

    @dmshar
    Потому что:

    либо
    obj = datetime.strptime('11.10.2021\xa0Mon', '%d.%m.%Y\xa0%a')


    либо
    import locale
    locale.setlocale(locale.LC_ALL, "ru")
    obj = datetime.strptime('11.10.2021\xa0пн', '%d.%m.%Y\xa0%a')
    Ответ написан
    Комментировать
  • На Python Как записать данные в несколько столбцов CSV?

    @dmshar
    О каком "столбце" идет речь? CSV - файл, это обычный ТЕКСТОВЫЙ файл, в котором просто "по договоренности" все данные делятся разделителем. Не более.
    Поэтому если вы просто открываете этот файл в MS EXCEL совершенно очевидно, что каждая запись будет представляться одной строчкой, которая попадает в один - как правило первый - столбец таблицы.
    Если вы хотите с таким файлом в дальнейшем работать именно как с таблицей, то уже в EXCEL вам надо осуществить импорт данных их csv в xslx формат. Делается этот так:
    Вкладка "Данные" -> Получение внешних данных ->Из текста->указываете имя вашего csv- файла ->выбераете формат "с разделителем"->Далее->выбираете используемый разделитель (например "запятая")->Далее->Готово->указываете место на листе, с которого импортированная таблица должна начинаться (обычно "=$A$1")->ОК
    и смотрите, что у вас получилось в вашей теперь уже настоящей таблице EXCEL.
    Ответ написан
  • Как сделать автоматический набор кода?

    @dmshar
    Я знаю, что существует приложения по типу Serenade или Talon, которые позволяют осуществить голосовой набор кода, мне бы хотелось узнать, возможно ли осуществить подобное на Python и если да, то что для этого требуется.
    Мне кажется, ответ совершенно очевиден для любого, кто реально является квалифицированным разработчиком.
    1. Разобраться и написать - возможно самому, а возможно путем вскрытия/изучения хотя-бы указанных пакетов - как это все должно будет выглядеть.
    2. Составить ТЗ на разработку с - желательно - максимально подробным описанием алгоритмов, которые при этом будут задействованы.
    3. По дороге понять, не просто "что потребуется", а специалисты в каких областях потребуются для разработки такого софта, а потом - найти и нанять таких специалистов на работу.
    4. Организовать процесс разработки.

    Если вы скажете, что все это очевидно - то полностью соглашусь, да все это полностью очевидно, но уж какой вопрос - такой и ответ.

    По ходу - несколько замечаний.
    1. Практически все, что делается с помощью других языков программирования можно реализовать и на Python. Вопрос только в удобстве и скорости разработки и в эффективности полученных программных продуктов.
    2. "Для этого" - совершенно очевидно - требуется хорошо знать возможности Python.
    3. Сама задача - создавать код "с голоса" - задача весьма сомнительной пользы. Кому она нужна? Инвалидам без рук? Или тому кто хочет диктовать (кстати - что именно? Саму программу, написанную предварительно на листочке?) и одновременно жевать бутерброд, "наблюдая" за процессом составления кода? Или школьнику, не осилившему изучения языка программирования и мечтающему, что-бы это за него делала программа?
    4. Абсолютно уверен, что даже если такая программа будет создана, ни скорость разработки ни даже качество конечного продукта не будут улучшены по сравнению с теми инструментами, которые имеются сегодня в наличии.
    5. Что бы понять, каково будет работать с таким продуктом - попробуйте поработать с намного более простым приложением - любым голосовым ассистентом, оцените его "удобства и преимущества" по сравнению с непосредственной. традиционной работой системы. А за одно почитайте, какие коллективы разработчиков трудились над созданием такого продукта.
    Ответ написан
    9 комментариев
  • Как обучить нейросеть выводить разные изображения?

    @dmshar
    А причем тут нейросеть? За "вывод картинки" отвечает matplotlib, а что вы туда будете писать - это ваше дело.
    Для того, что бы создать несколько картинок используется метод plt.subplots(.....), ну например создаем три картинки:

    fig, ax = plt.subplots(1, 3)

    Теперь у вас есть объект ax, и вы вольны писать в нужную вам "картинку":

    В первую:
    ax[0].imshow(....)

    В третью:
    ax[2].imshow(...)

    Во вторую:
    ax[1].plot()
    В произвольном порядке и произвольные типы графиков/картинок.

    Принцип, надеюсь понятен.
    А вообще-то рекомендую, до того, как "обучать нейросети" ознакомиться хотя-бы с азами Python и основных библиотек.
    Ответ написан
    Комментировать
  • Почему после изменений строк в столбце и сохранения в csv - выгружаются (сохраняются) данные до изменений?

    @dmshar
    Я так понял - это такой тест на умение угадывать, что и как написано в других частях вашей программы.
    Кроме того, вы уверены, что в вашем коде отступы во внутреннем цикле именно такие, как вы нам показали?
    if row.targer.str.startswith("0"):
    old_result=row.result
    df.loc[index, "result"] = "0"+ old_result

    Или это тест на наше знание языка?
    Но допустим, что это ошибка, и две строчки внутреннего цикла все-таки смещены относительно строчки условия.
    Тогда вариантов остается достачтоно.
    1. Никаких изменений в объекте df не произойдет если в исходном объекте df изначально нет ни одной строки. А есть они там или нет - сие нам не ведомо.
    2. Условие
    if row.targer.str.startswith("0"):
    не выполняется никогда. Так это или нет - сие нам тоже не ведомо. А вы сами это проверяли?
    3. Ладно, выгружается не то, что вы ожидаете. При так небрежно и неполно приведенном клочке скрипта угадать что не так в вашем скрипте - весьма трудно. Но вы хоть сами необходимую отладку провели? Вы проверили, а перед выгрузкой в файл в самом объекте какие данные находятся "старые" или "новые"? Или вы тоже это предлагаете нам угадать?
    Ответ написан
    Комментировать
  • Как организовать удалённый файлообмен на Python?

    @dmshar
    Вообще-то говоря, файлохранилища тут ни при чем. Есть два списка - sp_fl_1 и sp_fl_2. То, что это имена файлов, полученные в ваших п. 1. и 2. роли не играет. Надо найти элементы в sp_fl_1 которых нет в sp_fl_2.
    s_diff=set(sp_fl_1)-set(sp_fl_2)
    В переменной s_diff список объектов, присутствующих в первом списке, но отсутствующих во втором.
    Ну, далее "тянете" эти файлы из первого "файлахранилища", сохраняете во втором - или что там вы с ними хотите делать.
    Ответ написан
    3 комментария
  • Почему не работает цикл?

    @dmshar
    А что вы хотели сказать фразой (y*y < a) <= (y <= 8) ?? Тут слева проверяется менше-ли квадрат y значения а , и значение в скобках принимает ЛОГИЧЕСКОЕ значение True или False. Аналогично проверяется левая скобка. В результате получается загадочное выражение типа True<=False. Что-бы это означало?
    А со второй скобкой - еще интереснее. Результат аналогичного выражения - по итогу ЛОГИЧЕСКОЕ значение - сравнивается с 0, по сути со значением False. Это для чего?
    Ответ написан
    2 комментария
  • Можете объяснить как это работает?

    @dmshar
    Вообще-то у вас написано два раза разные вещи:
    сначала:
    value[:[i for i in range(len(value)) if value[i] < 0][0]])

    потом:
    [:[i for i in range(len(value)) if value[i] < 0[0]])

    Это вас не "мучает", или это специально, что-бы всех запутать?

    По первому варианту записи "[0] после условия" означает желание автора кода взять первый элемента списка, который сгенерирован вот тут:
    [i for i in range(len(value)) if value[i] < 0]
    а котором выбираются элементы списка, меньшие 0.
    Соответственно,
    value[:[i for i in range(len(value)) if value[i] < 0][0]]

    отбор элементов этого списка, идущие до первого отрицательного элемента списка.
    Ответ написан
    Комментировать
  • Верно ли, что нейронная сеть в случае классификации — это, грубо говоря, ансамбль логистических регрессий?

    @dmshar
    Нет.
    Ансамбль - это всегда обобщение нескольких решений в одно - последовательное, параллельное, более изощренное - но всегда есть несколько решений на основании которых как-то определяется одно.
    НС - это всегда поиск одного решения путем оптимизации коэффициентов уравнения (ну, весов связей если так вам проще).
    Если вы разобрались "классическим МЛ" - то должны понимать, что любая задача в этой области - это задача оптимизации. Иногда явно так сформулированная, иногда -
    несколько завуалировано. А НС - это просто еще один метод поиска того самого оптимума. Не более и не менее. Про всякую связь с "живыми" нейронами, синапсами и дендритами и пр. - забудьте сразу по прочтении.
    Ответ написан
    2 комментария
  • Как добавить правильно новый столбец pandas?

    @dmshar
    Ну, наверное, не больше 4, а больше 5. Вы ведь символы считаете, а не цифры. А точка - это тоже символ. Если-же вы мели что-то другое, то подправить скрипт, думаю, сможете сами:
    import pandas as pd
    def f(row):
        if len(row['TYPE'])>4 :
            rt = row['TYPE'][0:5]   
        else:
            rt =  row['TYPE']
        return rt
    df=pd.DataFrame({'TYPE':('17.21' ,'47.75.1','68.20.2')})
    df['TYPE_NEW'] = df.apply(f, axis=1)


    Результат:
    TYPE TYPE_NEW
    0    17.21    17.21
    1  47.75.1    47.75
    2  68.20.2    68.20
    Ответ написан
    1 комментарий
  • Как найти ближайшие точки на координатной плоскости?

    @dmshar
    Не понимаю, зачем обходить точки для решения задачи?
    Предположим, у вас поле не 10х10, а 100х100. А точек - 5. Вопрос: Сколько клеток вам надо обойти, что-бы найти оптимальную точку? Правильный ответ - 100х100-1.
    А теперь вспоминаем школьную математику. Расстояние между двумя точками "a" и "b" в двумерном пространстве определяется как sqrt(Xa-Xb)**2 +(Ya-Yb)**2).
    Все. Есть пять точек. Для каждой из них вычисляем расстояние до нашей точки и отбираем три (или сколько надо) для которых эти расстояния наименьшие.
    Даже на небольшой доске 10х10 и - предположим - 10 точках выигрыш прямого решения против последовательного обхода всех 99 точек очевиден.
    P.S. Ни к Python, ни к JavaScript эта задача не имеет отношения от слова совсем.
    Ответ написан
    Комментировать
  • Откуда лишние точки на графике?

    @dmshar
    Очень трудно понять, что вы пытаетесь на самом деле сделать. Но подозреваю, что вот это:

    import numpy as np
    import matplotlib.pyplot as plt
    dots = np.array([[1, 8], [1, 10], [2, 11], [3, 10], [3, 14], [4, 8], [5, 5], [5, 11], [5, 18], [6, 4], [8, 4], [10, 7], [10, 9], [10, 4], [11, 7], [11, 3], [12, 5], [12, 8], [12, 10], [12, 7], [14, 6], [14, 8], [16, 16], [16, 18], [17, 21], [18, 16], [18, 18], [18, 21], [19, 2], [19, 4], [19, 8], [19, 12], [19, 16], [19, 17], [19, 20], [20, 1], [20, 3], [20, 6], [20, 15], [20, 17], [21, 3], [21, 4], [21, 12], [21, 16], [21, 18], [21, 20], [22, 3], [22, 4], [22, 5], [22, 6]])
    x=[i[0] for i in dots]
    y=[i[1] for i in dots]
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(x,y, 'o')
    ax.set_xlabel('x-points')
    ax.set_ylabel('y-points')
    ax.set_title('Simple XY point plot')
    fig.show()

    6154d1392f0ad308925950.png
    Ответ написан
  • Как переименовать файл с помощью python?

    @dmshar
    А что, собственно, непонятного?
    Надеюсь, с английским у вас проблем нет? Вам же ясно написали:
    No such file or directory: '/content/train2017/000000211351.jpg' -> '522418.jpg'
    Какое слово в этом сообщении непонятно? А вот какого именно файла или директории у вас нет - сие нам не ведомо, надо смотреть на том компьютере, на котором вы выполняете это задание.
    Ответ написан
  • Как сделать приложение сортировщик на Python?

    @dmshar
    Совет 1.
    - Открыть ЛЮБОЙ учебник по Python (Лутц один из лучших).
    - Найти раздел "Работа с файлами". Изучить (там есть все, что вам надо. Подробно, обычно с примерами и детальными объяснениями).
    - Применить в своей задаче.
    (Кстати, это и есть "Алгоритм написания любой программы на любом языке программирования)"

    Совет 2.
    Хотя "создавать gui" на Python разумеется возможно, но при вашем текущем уровне знания Python рекомендую пока обойтись без этого. Потом, когда изучите основы, приступите и к GUI.
    Ответ написан
    Комментировать
  • Как ускорить перебор элементов списка?

    @dmshar
    Т.е. прошло больше года, а вы не сдвинулись ни на шаг?
    https://qna.habr.com/q/740387
    И скорее всего, даже не прочитали ответы, которые вам там дали.
    Это отлично характеризует автора вопроса и подсказывает всем, что смысла отвечать на него нет никакого.
    Ответ написан