🧠 Тип ndarray в NumPy — это основной тип данных для работы с массивами.
Когда создаёшь массив через
* ndim — число измерений (или осей) массива.
* shape — форма массива: кортеж с длинами по каждой оси. Например,
* size — общее число элементов (произведение всех чисел из
* dtype — тип элементов массива (например,
* itemsize — размер одного элемента в байтах.
* data — буфер с сырыми байтами массива (используется редко, удобнее работать с индексами).
👀 Пример:
✨ Факт: благодаря
Когда создаёшь массив через
numpy.array(), получаешь объект типа ndarray. Вот полезные атрибуты (не методы!), которые стоит знать:* ndim — число измерений (или осей) массива.
* shape — форма массива: кортеж с длинами по каждой оси. Например,
(3, 4) — это 3 строки и 4 столбца.* size — общее число элементов (произведение всех чисел из
shape).* dtype — тип элементов массива (например,
int32, float64).* itemsize — размер одного элемента в байтах.
* data — буфер с сырыми байтами массива (используется редко, удобнее работать с индексами).
👀 Пример:
import numpy as np
a = np.array([[1, 2], [3, 4]])
print(a.ndim) # 2
print(a.shape) # (2, 2)
print(a.size) # 4
print(a.dtype) # int64 (зависит от системы)
print(a.itemsize) # 8 (если int64)
✨ Факт: благодаря
ndarray, NumPy работает с данными гораздо быстрее, чем обычные списки Python.Срезы в NumPy — мощный и удобный инструмент для выборки данных из массивов, очень похожий на срезы списков в Python.
📌 Основной синтаксис:
📊 Для многомерных массивов можно выбирать строки, столбцы и блоки:
*
*
*
🔒 Срезы нельзя использовать для удаления, только для выборки.
✨ Лайфхак: срезы — это представление, а не копия! Изменяя данные в срезе, вы меняете оригинальный массив.
📌 Основной синтаксис:
array[a:b] — срез от a до b (не включая b).📊 Для многомерных массивов можно выбирать строки, столбцы и блоки:
*
array[:, a] — выбрать весь столбец с индексом a*
array[a, :] — вся строка a*
array[m:n, p:q] — срез блока: строки m:n, столбцы p:q🔒 Срезы нельзя использовать для удаления, только для выборки.
✨ Лайфхак: срезы — это представление, а не копия! Изменяя данные в срезе, вы меняете оригинальный массив.
❤1
Как рассчитать дату в будущем в Python
Чтобы вычислить будущий момент времени, нам нужно только добавить диапазон, определенный объектом
Затестить код можно тут
Чтобы вычислить будущий момент времени, нам нужно только добавить диапазон, определенный объектом
timedelta, к текущему времени.Затестить код можно тут
🤨4
Что делает
Этот магический блок позволяет запускать файл как скрипт, но не выполнять его при импорте:
💡 Удобно для тестов, CLI, или когда твой код — и модуль, и исполняемый файл.
__name__ == "__main__"?Этот магический блок позволяет запускать файл как скрипт, но не выполнять его при импорте:
if __name__ == "__main__":
main()
💡 Удобно для тестов, CLI, или когда твой код — и модуль, и исполняемый файл.
♾ Бесконечные списки в Python
Благодаря ленивым вычислениям можно создать "бесконечный" список, который не занимает много памяти. Например, с помощью генераторов или
⚙️ Это не настоящий список, но ведёт себя похоже — пока не остановишь, элементы будут продолжать поступать.
Благодаря ленивым вычислениям можно создать "бесконечный" список, который не занимает много памяти. Например, с помощью генераторов или
itertools.import itertools
for i in itertools.count():
print(i)
⚙️ Это не настоящий список, но ведёт себя похоже — пока не остановишь, элементы будут продолжать поступать.
Декораторы в Python: элегантный способ расширить поведение функций без изменения их кода.
Они позволяют оборачивать одну функцию в другую, добавляя дополнительную логику. Например,
⚡️ Удобно для логирования, проверки прав, кэширования и не только.
Они позволяют оборачивать одну функцию в другую, добавляя дополнительную логику. Например,
@staticmethod делает метод частью класса, но без доступа к self или cls.⚡️ Удобно для логирования, проверки прав, кэширования и не только.
Распаковка переменных: красиво и быстро
Python умеет распаковывать всё:
Это удобно, читаемо и просто 🔥
⚙️ Подходит для функций, циклов, и работы с коллекциями.
Python умеет распаковывать всё:
a, b, c = [1, 2, 3]
x, *rest = range(5)
Это удобно, читаемо и просто 🔥
⚙️ Подходит для функций, циклов, и работы с коллекциями.
Голос → Напоминание: автоматизация с Python
С помощью Python можно превратить голосовые команды в текстовые напоминания и отправлять их себе на email. Используем
📌 Пример:
🎙 Отличный способ превратить идеи в напоминания — прямо с голоса
С помощью Python можно превратить голосовые команды в текстовые напоминания и отправлять их себе на email. Используем
speech_recognition для распознавания речи и smtplib для отправки писем.📌 Пример:
import speech_recognition as sr
import smtplib
recognizer = sr.Recognizer()
with sr.Microphone() as source:
print("Говорите...")
audio = recognizer.listen(source)
text = recognizer.recognize_google(audio, language="ru-RU")
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login("your_email@example.com", "your_password")
server.sendmail("your_email@example.com", "your_email@example.com", text)
server.quit()
🎙 Отличный способ превратить идеи в напоминания — прямо с голоса
❤1
PyWin32: доступ к системной информации Windows
С помощью библиотеки
📌 Пример:
🎯 Полезно при разработке desktop-приложений или системных утилит под Windows.
С помощью библиотеки
pywin32 можно легко взаимодействовать с API Windows. Например, чтобы узнать разрешение экрана, используем GetSystemMetrics() из модуля win32api.📌 Пример:
import win32api
import win32con
width = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
height = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)
print(f"Разрешение экрана: {width}x{height}")
🎯 Полезно при разработке desktop-приложений или системных утилит под Windows.
Быстрое копирование текста в буфер обмена с помощью Python
С помощью библиотеки
📌 Пример:
📋 Удобно для автозаполнения форм, быстрой вставки данных и CLI-инструментов.
С помощью библиотеки
pyperclip можно копировать и вставлять текст в буфер обмена прямо из Python — полезно для автоматизации и скриптов.📌 Пример:
import pyperclip
pyperclip.copy("Привет из Python!")
text = pyperclip.paste()
print(text)
📋 Удобно для автозаполнения форм, быстрой вставки данных и CLI-инструментов.
Получение погоды через API и Python
Используйте Python и OpenWeatherMap API, чтобы в реальном времени получать прогноз погоды.
📌 Пример (часть):
🌤 Удобно для ботов, приложений и умных виджетов.
Используйте Python и OpenWeatherMap API, чтобы в реальном времени получать прогноз погоды.
📌 Пример (часть):
import requests
api_key = "your_api_key"
city = "Moscow"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
response = requests.get(url).json()
print(f"{city}: {response['main']['temp']}°C")
🌤 Удобно для ботов, приложений и умных виджетов.
❤4
Пришлось на работе разобраться с интересными GitHub-проектами на Python в сфере AI, делюсь с вами, что тестировал. AutoGPT - для автономных задач, GPT‑Neo - для локальной генерации текста, а ComfyUI - для управления визуальными AI‑проектами через графические потоки.
🤖 AutoGPT — автономный AI‑агент
Проект AutoGPT способен сам ставить задачи, разбивать их на под‑задачи и выполнять их без вашего постоянного участия.
Устанавливаете, даёте цель — например, «сгенерировать отчёт о трендах рынка» — и AutoGPT будет планировать, искать информацию и создавать результат.
💡 Идеально для автоматизации рутинных задач с минимальным вмешательством.
📚 GPT‑Neo — локальный генератор текста
Open‑source модель наподобие GPT‑3 от EleutherAI, работающая в Python. Поддерживает генерацию — например, вы можете создать выпуск новостей:
Более 4 800⭐️ на GitHub.
🎨 ComfyUI — визуальный редактор для генерации изображений
Node‑based интерфейс на Python для работы с моделями вроде Stable Diffusion. Сборка «блоков» превращает текст в картинку: ввод → стиль → фильтры — и вы получаете изображение .
Идеально для тех, кто хочет гибко экспериментировать с генеративным AI без сложных скриптов.
Как протестить?
* AutoGPT:
* GPT‑Neo: просто используйте код выше, установив через
* ComfyUI:
🤖 AutoGPT — автономный AI‑агент
Проект AutoGPT способен сам ставить задачи, разбивать их на под‑задачи и выполнять их без вашего постоянного участия.
Устанавливаете, даёте цель — например, «сгенерировать отчёт о трендах рынка» — и AutoGPT будет планировать, искать информацию и создавать результат.
💡 Идеально для автоматизации рутинных задач с минимальным вмешательством.
📚 GPT‑Neo — локальный генератор текста
Open‑source модель наподобие GPT‑3 от EleutherAI, работающая в Python. Поддерживает генерацию — например, вы можете создать выпуск новостей:
from transformers import GPTNeoForCausalLM, GPT2Tokenizer
model = GPTNeoForCausalLM.from_pretrained("EleutherAI/gpt-neo-1.3B")
tok = GPT2Tokenizer.from_pretrained("EleutherAI/gpt-neo-1.3B")
prompt = "Аналитика рынка криптовалют на сегодня:"
ids = tok(prompt, return_tensors="pt").input_ids
out = model.generate(ids, do_sample=True, max_length=200)
print(tok.decode(out[0]))
Более 4 800⭐️ на GitHub.
🎨 ComfyUI — визуальный редактор для генерации изображений
Node‑based интерфейс на Python для работы с моделями вроде Stable Diffusion. Сборка «блоков» превращает текст в картинку: ввод → стиль → фильтры — и вы получаете изображение .
Идеально для тех, кто хочет гибко экспериментировать с генеративным AI без сложных скриптов.
Как протестить?
* AutoGPT:
git clone https://github.com/Significant-Gravitas/AutoGPT.git
cd AutoGPT
pip install -r requirements.txt
export OPENAI_API_KEY=…
python -m autogpt --help
* GPT‑Neo: просто используйте код выше, установив через
pip install transformers torch.* ComfyUI:
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt
python main.py
Чтобы избавиться от значений вроде False, None, 0 или '' — воспользуйтесь filter(None, lst). Только "истинные" элементы останутся. Кстати, bool() поможет проверить, что Python считает за True и False.
Проверить вручную какое-либо значение на True/False можно с помощью функции bool(): bool(0) вернёт False, но bool('0') уже будет True, так как это непустая строка.
Проверить вручную какое-либо значение на True/False можно с помощью функции bool(): bool(0) вернёт False, но bool('0') уже будет True, так как это непустая строка.
🎯 any() — нашёл и хватит
Функция
Полезно, когда нужно быстро проверить, есть ли что-то «живое» в списке.
Функция
any() возвращает True, как только встречает первый «истинный» элемент в коллекции.values = [0, None, '', 5]
if any(values):
print("Есть хотя бы одно значение!")
Полезно, когда нужно быстро проверить, есть ли что-то «живое» в списке.