numpy
Во-первых, нужно установить сборку питона под названием анаконда с сайта https://www.continuum.io/downloads
(брать версию для python 3.5, версию для x64, если у вас 64-х битная ось)
Во-вторых, рекомендуется переходить на IDE PyCharm, который имеет достаточно много фич, которые нам будут удобны.
Основные — это большое количество подсказок в процессе написания кода.
Основные hot key:
Ctrl+Alt+E — выполнить выделенный код в консоли
Shift+Ctrl+F10 — запустить текущий скрипт целиком в отдельном процессе
Ссылки по теме:
Если вы знаете английски, то лучше всего подойдёт оригинальный tutorial: https://docs.scipy.org/doc/num[..]user/quickstart.html
Иначе можно начать со странички https://pythonworld.ru/numpy/1.html
Задачи
01. Массив нулей
02. Числа на диагонали
в котором по диагонали идут числа 0 до n-1, а остальные числа равны 0
03. Числа в нулевой строке
в котором в первой строчке идут числа от 0 до n-1, а остальные числа равны 0
04. Сбитый прицел
в строке r и столбце c стоят 1, а остальные числа равны 0
05. Почётные единицы
в котором в чётных строчках стоят 1, а в нечётных
нули
06. Решето
в котором в каждой R-ой строчке и в каждом C-ом столбце стоят 1
07. Шахматы единиц
имеющий вид шахматной доски.
08. Разлиновка
в котором в строках с перечисленными выше индексами стоят 1.
09. Порядок индексов
ширина и высота картинки в пикселях.
Создайте подходящий массив, в котором можно хранить трёхцветную картинку данной ширины и высоты.
При этом данные в памяти должны храниться так, чтобы сначала шли три цвета одного пикселя,
затем цвета следующего пикселя в этой же строчке или первый пиксель из следующей строчки.
10. Картинки
from skimage import io
img = io.imread('30x60g.png')
Сохранять изменённые картинки можно при помощи команды
from skimage import io
io.imsave('res.png', img)
Извлеките из цветной картинки только зелёный слой и сохраните в отдельный файл.
11. Состыковка
Сделайте то же самое с цветными картинками.
12. Вставка
Добавьте ещё и горизонтальную серую полосу.
Теперь в цветную картинку добавьте зелёную вертикальную полосу и красную горизонтальную (каждую по центру, шириной 10 пикселей)
13. Удаление
14. Отрезок
Проведите на ней отрезок из точки (x1,y1) в точку (x2,y2).
Сохраните картинку в файл (или нагуглите, как её показать прямо из программы).
15. Случайное подмножество строк
Отберите случайные k строк из массива и сформируйте из них массив размера kxW.
16. Перемешать строки
17. Индекс в массиве
18. Поменять знак
19. Заменить все максимумы
20. Ближайшее
21. Сортировка
22. argsort
23. argsort – 2
24. Нормировка
matplotlib
Основным материалом будет следующий ресурс: http://nbviewer.jupyter.org/gi[..]_python/tree/master/
Задача 1
Глобальная задача: увидеть, что в питоне для умножения больших чисел используется алгоритм Карацубы, а также получить практически его асимптотику.
Должен получиться график в духе такого:
Задача 2
Ирисы Фишера
from sklearn import datasets
# После этой команды будет загружен словарь (выполнить один раз)
iris = datasets.load_iris()
# Сохраняем данные на компьютер (выполнить один раз)
# data, target, feature_names, target_names = iris['data'], iris['target'], iris['feature_names'], iris['target_names']
# with open(r'M:\np_basic\iris.dump', 'wb') as f:
# pickle.dump((data, target, feature_names, target_names), f)
# Загрузка данных из сохранённого дампа
with open(r'M:\np_basic\iris.dump', 'rb') as f:
Задача 3
Титаник
Данные:
file:/titanic_train.csv
import numpy as np
import pandas as pd
titanic_df = pd.read_csv("titanic_train.csv")
# Вектор ответов
y_train = titanic_df['Survived'].as_matrix()
# Удаляем ненужные столбцы
titanic_df.drop(['PassengerId','Name','Ticket','Survived'], axis=1, inplace=True)
# Данные
columns = titanic_df.columns
x_train = titanic_df.as_matrix()
Описание столбцов:
- PassengerId — идентификатор пассажира
- Survival — поле в котором указано спасся человек (1) или нет (0)
- Pclass — содержит социально-экономический статус:
- высокий
- средний
- низкий
- Name — имя пассажира
- Sex — пол пассажира
- Age — возраст
- SibSp — содержит информацию о количестве родственников 2-го порядка (муж, жена, братья, сетры)
- Parch — содержит информацию о количестве родственников на борту 1-го порядка (мать, отец, дети)
- Ticket — номер билета
- Fare — цена билета
- Cabin — каюта
- Embarked — порт посадки
- C — Cherbourg
- Q — Queenstown
- S — Southampton
Для kaggle:
file:/titanic_test.csv
test_df = pd.read_csv("train.csv")
# Сохраняем ID пассажиров
PassengerIds = test_df['PassengerId'].as_matrix()
# Удаляем ненужные столбцы
test_df.drop(['PassengerId','Name','Ticket','Survived'], axis=1, inplace=True)
# Делаем предсказание
y_pred = np.zeros_like(PassengerIds)
# Генерим ответ
submission = pd.DataFrame({"PassengerId": PassengerIds, "Survived": y_pred})
submission.to_csv('titanic_submission.csv', index=False)