Задать вопрос
  • Что изучать после пайтона?

    Maksim_64
    @Maksim_64
    Data Analyst
    Часть первая: Английский Язык.

    Часть вторая: поставь anaconda и jupyter lab

    Часть третья: python фреймворки
    1. numpy - изучать каждый метод не нужно, нужно освоить broadcasting Это правила по которым происходят операции с массивами разной размерности. Не изучишь, не сможешь работать с нейронными сетями и много еще с чем.

    2. pandas - нужно научится понимать, как работают индексы (вся мощь но и сложность лежит в индексах особое внимание к многоуровневым индексам). Группировки объект groupby. Решайпинг, методы stack, unstack, melt и т.д. Решайпинг сложная тема, но без нее никуда.

    3. matplotlib - нужно научится работать в ооп стиле, а не в матлаб стиле.

    Вот эти 3 можешь начинать изучать без математики. учить по документации . Скачай учебные датасеты простенькие, задавай им вопросы применяй и визуализируй.

    4. scikit-learn - это машинное обучение, тебе понадобится разобраться что такое оценщик (estimator) и transformer (трансформатор). Также научится пользоваться пайплайнами, объект Pipeline это для старта, естественно.

    5. statsmodels - это не много иной взгляд на машинное обучение он включает в себя инферентивную статистику. Например построив логистическую регрессию, я могу посредством этой библиотеки найти каким образом изменение на одну единицу одного из моих предикторов отражается на вероятности, так называемый маржинальный эффект. Это очень важно для бизнеса. Также A/B тесты тоже там, и многое многое другое.

    4 и 5 также учить по документации она совершенно фантастического уровня особенно для scikit-learn + очень важный плюс В этой области есть классика это книга Statistical Learning книга написана профессорами стенфорда, в мире датасаенс она очень известна. Раньше она была написана на R, я ее читал на R в свое время, так вот 2023 году этим летом вышла python edition. Книга и код доступны бесплатно. https://www.statlearning.com/
    Это уникальная книга без равных, но к ней надо быть готовым.

    Часть Четвертая: Математика
    Все что нужно есть на Khan Academy. Начни со своего уровня и вперед, математика тебе нужна вся. Особенно Calculus. Заходишь на Khan Academy и вперед проходи бесплатные курсы со своего уровня,
    Algebra 1,
    Algebra 2,
    Precalculus,
    AP/College Calculus AB
    AP/College Calculus BC
    Statistics and Probability
    AP College Statistics

    Вот эти курсы вот этом порядке, ты должен освоить, то есть в конце курса финальный тест, должен проходить играючи, и все делать на листке бумаги не читерить, сам себя обманешь. Потом книга что я указал выше, код в книге естественно в основном использует scikit-learn и statsmodels, + первые три библиотеки само собой.

    Потом придется прочитать еще пару книг по теории вероятности и статистике отдельно (со временем). Если calculus на Khan Academy на должном уровне, то вот теория вероятности и статистика слабенькая, нужно будет добавлять.

    В добавление еще SQL но поверхостно, уровень не сложных запросов и подзапросов. Все дела будут происходить в pandas.
    Ответ написан
    Комментировать
  • Можно ли использовать несколько сетей?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Угу-угу. Воткнул ты такой usb с чем-то непонятным, сидишь балдеешь, потом поднимаешь глаза - опа, а рядом безопасник стоит :) и без всякой улыбки спрашивает - а что это такое только что воткнули в ноут?

    Если это по работе - лучше напрячь админов. Если не по работе - лучше всего не лезть на корпоративный ноут.
    Ответ написан
    1 комментарий
  • Есть ли способ аннотировать аргументы метода переменной класса?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    На данный момент в Python нет прямого способа аннотировать типы аргументов, которые зависят от внутреннего состояния объекта или определяются во время исполнения программы.

    Как вариант, можно закостылить так:
    from dataclasses import dataclass
    from typing import Any, Literal, TypeAlias, Self 
    
    @dataclass()
    class BaseConfig:
        ITEM: TypeAlias = Literal["item1", "item2"]
    
    class MyClass:
        def __init__(self, config: BaseConfig = BaseConfig) -> None:
            self.config = config
    
        def meth(self, item: Any) -> Self:
            if item not in self.config.ITEM:
                raise ValueError(f"Invalid value {item} for item. Expected one of {self.config.ITEM}.")
            ...
    Ответ написан
    Комментировать
  • Как сделать оформление словаря в txt файле и вычитывание значений из этого файла?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Надо вам бы книжечку почитать по питону. Быстрее и полезнее было бы для вас в плане освоения.
    Вот, например устаревшая конструкция:
    #-*- coding:cp1251 -*-
    Сейчас принято весь код держать в utf-8 и испоьзовать свежий питон третьей версии.

    Прочитайте про PEP8.
    Считается плохим стилем использовать CamelCase для чего-то кроме классов.
    Для переменных и имен функций нужно использовать snake_case.
    selected_genre = str()
    selected_game = str()

    Ни к чему объявлять такие переменные присвоением пустой строки, причем с вызовом явного конструктора. В Питоне строки - неизменяемый тип, а переменные. это не ячейки, зарезервированные в памяти, а, как бы, "бирки" с именем, которые вешаются на объекты. ВОт строки - это объекты, которые нельзя менять. Как создаются, так и остаются.

    genre_file = open('genres.txt')
    Не хорошо так открывать файл. Для такого мелкого скрипта это не так важно, но хорошую привычку у себя формировать надо всегда и всегда надо работать с файлами правильно. Через контекстный менеджер with и используя pathlib.

    GenreList.append(line.strip())
    Обратите внимание на разницу между append и extend, именно в этом одна из причин проблемы, с которой вы тут боретесь.

    value = item.split(" ")[1:]
    Сплит можно делать по знаку равно, а не только по пробелу. Такое ощущение, что вы не особо задумываетесь, что пишете в коде.

    Там дальше вообще какая-то дичь. Так писать нельзя. Код непрозрачный и нечитабельный. Если вы наделали кучу косяков и ошибок в более простом коде, то вот в дальнейшей каше там вообще швах.
    Проще надо.

    Во-первых, используйте стандартные форматы для сериализации структур данных, например json, а тут лучше yaml. Он лучше подходит для редактирования человеком и не надо его парсить вручную совершая кучу ошибок в никому не нужном коде. Ваша задача вся решается в несколько понятных простых строчек, а вы тут навертели.

    Во-вторых, почему вы так странно храните и выбираете игры? Храните их одним перечнем словарей. Каждый словарь в перечне будет соответствовать одной игре. В этом словаре будут все её параметры: название, жанр, рейтинг, если надо, который будет влиять на вероятность выбора...

    Разбивайте всегда задачу на ОЧЕНЬ МАЛЕНЬКИЕ подзадачи и решайте их отдельно. Проверяйте решение подзадачек тоже по отдельности, убеждайтесь, что этим мелкие кирпичики работают.

    Повторюсь, изучайте питон, чтобы программировать на нем как на питоне, а не вот так вот. Успехов.
    Ответ написан
    4 комментария
  • Какой метод разрешения коллизий используется в Python?

    @deliro
    Открытая адресация, но по формуле, а не тупо сдвигом на один
    Ответ написан
    Комментировать
  • Как парсить приложение на андройд?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    1 комментарий
  • Как создать API?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Если вы хотите понять принципы API, то гуглите "rest api".
    Но ваше желание его создать весьма преждевременно.
    API не цель.
    API - средство.
    Когда он будет вам действительно необходим, вы уже будете знать что делать.
    Ответ написан
  • Возможно ли обучить ИИ определять данные анализов по фото?

    Maksim_64
    @Maksim_64
    Data Analyst
    Есть библиотека tensorflow. Она имеет api для разных языков, в том числе и для js. Ее вы и нашли tensorflow.js.

    Да это возможно. Построить классификатор (распознаватель) OCR (Optical character recognition) в данном случае, который будет распознавать данные из каждой ячейки. Построение таких распознователей, это задача для специалиста. Такого что засунул файл с изображением в нейронную сеть и готово нет. Это целый процесс.

    В первую очередь я бы попробовал готовый parser таблиц, для картинок и pdf файлов. На python. Библиотека img2table она базируется на OpenCV, но специализируется на табличных данных. Возможно она решит все ваши вопросы, это будет значительно проще и быстрее.
    Ответ написан
    Комментировать
  • Что делать, когда Wolfram говорит, что будет корень, а считать не хочет - a³+b³=z³?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище Корень. Вижу прошло пару месяцев а ты все тот-же Ферматист :)

    Я не знаком с пакетом Вольфрам. Но его делал очень умный человек. И я думаю что символьные
    вычисления там тоже поддерживаются.

    Но такие вычисления обычно подходят под расчеты с дробями. Например 1/2 + 1/3 = 1
    в символьных вычислениях поддерживаются. Это позволяет точнее посчитать
    пределы например.

    То что ты посчитал - это трансцедентное число.

    z = exp((1/3)*log(664572³ + 257118³))

    Из-за логарифма внутри.
    Везде где есть синусы, логарифмы (ряды Тейлора) мы можем говорить об этом
    свойстве чисел. Грубо говоря это число которое мы не можем в общем случае
    получить путем конечного числа операций над рациональными числами.

    И обычно в физике и в инженерном деле логарифмы и экспоненты считают приближенно.
    Используя float, double и extended (80bit). И этого хватает чтоб запускать ракеты на Марс.

    Их никто не считает точно, просто по той причине что их нельзя представить точно.
    У нас не хватит памяти всех датацентров чтоб точно такое считать.

    Иногда в очень-очень редких случаях математический пакет может упростить формулу
    аналитически (exp(log(x)) и получить более простые цифры без свойства трансцедентности.
    Почитай документацию по MathCad, MatLab, может там такое тоже есть.

    Я также упрекаю тебя в невнимательности. Я тебе в прошлый раз делал акцент на типах
    данных. И ты это благополучно проигнорировал. И снова ты полез в теорию чисел и Ферма
    даже не понимая с каким типом данных работает Вольфрам. Разберись сначала с этим вопросом.
    Иначе будешь всегда выглядеть почемучкой.
    Ответ написан
    6 комментариев
  • Что делать, когда Wolfram говорит, что будет корень, а считать не хочет - a³+b³=z³?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Этот корень - иррациональное число. Бесконечное. Его точно на компьютере не подсчитать никак. Это будет какое-то большое число с бесконечным не повторяющимся набором цифр после точки.

    Точнее всех будет считать python если использовать библиотеку Decimal:
    from decimal import *
    getcontext().prec = 400
    a = Decimal('112312312312312311231231231231231123123123123123112312312312312311231231231231231123123123123123');
    print(pow(a,Decimal(1/3.0)))


    Можете хоть тысячи знаков считать, ограничения - в основном скорость работы и требования по памяти.
    Ответ написан
    5 комментариев
  • Как сделать так чтобы в scrapy, парсились дубликаты ссылок? То есть так чтобы каждая спаршенная ссылка, должна создать уникальный файл. Как?

    Vindicar
    @Vindicar
    RTFM!
    Перед открытием файла проверяй, существует ли он. Если существует, добавляй числовой суффикс, пока не найдёшь свободное имя. Для простоты можешь оформить это в виде функции, которая принимает исходное имя файла, а возвращает либо его же, либо скорректированный вариант.
    Для реализации pathlib в помощь.
    Ответ написан
    2 комментария
  • Raid1 на двух hdd разных производителей?

    @aleks-th
    Можно.
    Даже в некоторых источниках рекомендуют в рейд1 ставить разные диски - так как у дисков из одной партии больше вероятность помереть одновременно.

    Единственный момент если будете делать средствами матплаты - очень аккуратно и бекап предварительно сделайте, а то можно случайно диск с данными почистить и данные случайно потерять при создании рейда, в некоторых биосах этот пункт по умолчанию стоит.
    Ответ написан
    Комментировать
  • ValueError: operands could not be broadcast together with shapes (720,406) (400,) (720,406) в stable diffusion?

    Maksim_64
    @Maksim_64
    Data Analyst
    Сама по себе ошибка, довольно известная, и происходит она на уровне numpy. При работе с массивами данных, есть такой важный термин, как broadcasting - это то как numpy осуществляет арифметические операции с массивами разной размерности.
    Например
    import numpy as np
    arr1 = np.ones(9).reshape(3,3)
    arr2 = np.ones(8).reshape(2,4)
    arr1 + arr2
    Выдаст по смыслу такую же ошибку, как у вас, размерности разные и он не в состоянии произвести оперцию.
    А вот в этом примере
    import numpy as np
    arr1 = np.ones(27).reshape(3,3,3)
    arr2 = np.ones(9).reshape(3,3)
    arr1 + arr2
    Не смотря на то что размерности разные у нас двумерный массив складывается с трехмерным, ошибки не будет все сработает.
    Потому что согласно правилам broadcatsting'a, данная арифметическая операция возможна.

    Так и у вас, numpy не в состоянии выполнить broadcasting. Как поправить, по скольку вы напрямую не работаете с массивами, а используете интерфейс stable diffusion, то все ответы надо искать там. Либо вы передаете массив с данными, не в той размерности, либо что то в параметрах stable diffusion не то. Ищите рабочий пример и повторяйте. Так поправьте здесь что то или там что то, здесь сказать не возможно. Что из себя представляет проблема я обрисовал.
    Ответ написан
    9 комментариев
  • Как использовать on_startup в боте телеграмм?

    1. У тебя ошибка в SQL-синтаксисе: CREATE TABLE IF NOTE EXISTS
    2. Что мешает тебе вызывать bd_start непосредственно перед запуском бота? Что-то типа:
    async def main():
        await bd_start() # так
        bot = Bot(token=config.BOT_TOKEN, parse_mode=ParseMode.HTML)
        dp = Dispatcher(storage=MemoryStorage())
        dp.include_router(router)
        await bot.delete_webhook(drop_pending_updates=True)
        await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types(), on_startup=on_startup)
    Ответ написан
    1 комментарий
  • Что за шифр или комбинация шифров?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище так нельзя делать. Криптоанализ предполагает что ты знаешь что ищешь.
    Из какого приложения ты это скопировал? Что ожидается? Хешированный пароль?
    Магнитная ссылка? И мы должны знать контекст. А может ты взял задачу на cryptohack
    и пришел сюда за подсказкой? Так нельзя! Иди в тот форум и там спрашивай.

    У них условие даже есть что участники не обсуждали задачи на стороне.
    Ответ написан
    Комментировать
  • Какие сервера поднимаются на виртуалках, а какие физически?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Заказчик сам выбирает обычно. Исходя из денег. VPS или bare-metal. Насколько амбиций хватит.
    В последнее время все тяготеют к Kubernetes. Он как-то динамичнее утилизирует доступные железки.
    Если VPS подняли. Поставили ОС. Поставили софт .... и побежали твои денежки к облаку.
    А с кубером так. Захотел бигдату посчитать. Написал джоб. Запустил в кубере. Джоб отработал 1 час.
    И ты заплатил ровно за 1 час. Дисковые хранилища там почти бесплатны. По цене грязи.
    Ну з IOPS в пике можно заплатить. Но в целом пока джобы не работают ты ничего не платишь.

    Вот. Еще лямбды (AWS) и clound-functions (другие облаки) тоже потребляют по 1 центу за вызов.
    И при этом ее хостинг тебя не волнует. Она поднимется на любой виртуалке где есть ресурсы.

    Поэтому не bare-metal -> VPS. А все еще запутанее хитрее. Железо. Виртуализация. Потом что там...
    контейнеризация... Потом FAAS. Функции. Вот поэтому вопрос звучит не какие сервера поднмиаются
    а какой бизнес-функционал лучше летает на каком уровне этой лестницы.
    Ответ написан
    Комментировать
  • Клиент, запущеный раньше сервера к нему не подключаеться. Как исправить?

    Vindicar
    @Vindicar
    RTFM!
    Я не понял зачем ты пытаешься подключиться к серверу в отдельном потоке. Если это критично, почитай про неблокирующие операции на сокетах, и как ими пользоваться.

    Да ещё и глотаешь исключения. Очень не советую писать except: pass, у тебя вместо сколь-нибудь понятного сообщения об ошибке программа будет молча не работать.

    В любом случае ты делаешь только одну попытку подключения. Поток выполнит try_connect() один раз и завершит работу. Отсюда и наблюдаемое поведение - клиент не переконнектится, потому что в коде это не прописано.
    Ответ написан
    Комментировать
  • Мой код слишком громоздкий?

    @kalapanga
    Задача решена неверно. Тут нужно не улучшать, а исправлять! У Вас что, люди будут есть отдельно булки и отдельно сосиски? Нет! Так зачем Вы просите ввести количество булок и отдельно количество сосисок? В условии же ясно написано - запросить количество участников и количество хотдогов, которые будут предложены каждому. Соответственно и дальнейший расчёт должен отталкиваться именно от этих значений.
    Ответ написан
    6 комментариев
  • Не понимаю, почему данные в разных строках?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Потому что нужно выучить хотя бы базовый синтаксис SQL! Одна строка вставляется одним запросом, каждый инсерт вставляет новую строку!
    execute('INSERT INTO table (FIO, Address, Email) VALUES (?, ?, ?)', ('ФИО', 'Your Address', 'your@email.com'))
    Ответ написан