100 (на самом деле, пока меньше) задач для NumPy, перевод английского варианта https://github.com/rougier/numpy-100
Импортировать NumPy под именем np
Напечатать версию и конфигурацию
Создать вектор (одномерный массив) размера 10, заполненный нулями
Создать вектор размера 10, заполненный единицами
Создать вектор размера 10, заполненный числом 2.5
Как получить документацию о функции numpy.add из командной строки?
Создать вектор размера 10, заполненный нулями, но пятый элемент равен 1
Создать вектор со значениями от 10 до 49
Развернуть вектор (первый становится последним)
Создать матрицу (двумерный массив) 3×3 со значениями от 0 до 8
Найти индексы ненулевых элементов в [1,2,0,0,4,0]
Создать 3×3 единичную матрицу
Создать массив 3x3x3 со случайными значениями
Создать массив 10×10 со случайными значениями, найти минимум и максимум
Создать случайный вектор размера 30 и найти среднее значение всех элементов
Создать матрицу с 0 внутри, и 1 на границах
Выяснить результат следующих выражений
Создать 5×5 матрицу с 1,2,3,4 под диагональю
Создать 8×8 матрицу и заполнить её в шахматном порядке
Дан массив размерности (6,7,8). Каков индекс (x,y,z) сотого элемента?
Создать 8×8 матрицу и заполнить её в шахматном порядке, используя функцию tile
Перемножить матрицы 5×3 и 3×2
Дан массив, поменять знак у элементов, значения которых между 3 и 8
Создать 5×5 матрицу со значениями в строках от 0 до 4
Есть генератор, сделать с его помощью массив
Создать вектор размера 10 со значениями от 0 до 1, не включая ни то, ни другое
Проверить, одинаковы ли 2 numpy массива
Сделать массив неизменяемым
Дан массив 10×2 (точки в декартовой системе координат), преобразовать в полярную
Заменить максимальный элемент на ноль
Создать структурированный массив с координатами x, y на сетке в квадрате [0,1]x[0,1]
Из двух массивов сделать матрицу Коши C (Cij = 1/(xi — yj))
Найти минимальное и максимальное значение, принимаемое каждым числовым типом numpy
Напечатать все значения в массиве
Найти ближайшее к заданному значению число в заданном массиве
Создать структурированный массив, представляющий координату (x,y) и цвет (r,g,b)
Дан массив (100,2) координат, найти расстояние от каждой точки до каждой
Преобразовать массив из float в int
Как прочитать его?
Каков эквивалент функции enumerate для numpy массивов?
Сформировать 2D массив с распределением Гаусса
Случайно расположить p элементов в 2D массив
Отнять среднее из каждой строки в матрице
Отсортировать матрицу по n-ому столбцу
Определить, есть ли в 2D массиве нулевые столбцы
Дан массив, добавить 1 к каждому элементу с индексом, заданным в другом массиве (осторожно с повторами)
Дан массив (w,h,3) (картинка) dtype=ubyte, посчитать количество различных цветов
Дан четырехмерный массив, посчитать сумму по последним двум осям
Найти диагональные элементы произведения матриц
Дан вектор [1, 2, 3, 4, 5], построить новый вектор с тремя нулями между каждым значением
Поменять 2 строки в матрице
Рассмотрим набор из 10 троек, описывающих 10 треугольников (с общими вершинами), найти множество уникальных отрезков, составляющих все треугольники
Дан массив C; создать массив A, что np.bincount(A) == C
Посчитать среднее, используя плавающее окно
Дан вектор Z, построить матрицу, первая строка которой (Z[0],Z[1],Z[2]), каждая последующая сдвинута на 1 (последняя (Z[-3],Z[-2],Z[-1]))
Инвертировать булево значение, или поменять знак у числового массива без создания нового
Рассмотрим 2 набора точек P0, P1 описания линии (2D) и точку р, как вычислить расстояние от р до каждой линии i (P0[i],P1[i])
Читайте также: Как подключить айфон к телевизору dexp
Дан массив. Написать функцию, выделяющую часть массива фиксированного размера с центром в данном элементе (дополненное значением fill если необходимо)
Посчитать ранг матрицы
Найти наиболее частое значение в массиве
Извлечь все смежные 3×3 блоки из 10×10 матрицы
Создать подкласс симметричных 2D массивов (Z[i,j] == Z[j,i])
Рассмотрим множество матриц (n,n) и множество из p векторов (n,1). Посчитать сумму p произведений матриц (результат имеет размерность (n,1))
Дан массив 16×16, посчитать сумму по блокам 4×4
Написать игру «жизнь»
Найти n наибольших значений в массиве
Построить прямое произведение массивов (все комбинации с каждым элементом)
Даны 2 массива A (8×3) и B (2×2). Найти строки в A, которые содержат элементы из каждой строки в B, независимо от порядка элементов в B
Дана 10×3 матрица, найти строки из неравных значений (например [2,2,3])
Преобразовать вектор чисел в матрицу бинарных представлений
Дан двумерный массив. Найти все различные строки
Даны векторы A и B, написать einsum эквиваленты функций inner, outer, sum и mul
лабораторные работы и задачи по программированию и информатике, егэ по информатике
Создание, вывод и ввод матрицы в Питоне
Для работы с матрицами в Python также используются списки. Каждый элемент списка-матрицы содержит вложенный список.
Рассмотрим пример матрицы размера 4 х 3:
matrix = [[-1, 0, 1], [-1, 0, 1], [0, 1, -1], [1, 1, -1]]
Данный оператор можно записать в одну строку:
matrix = [[-1, 0, 1], [-1, 0, 1], [0, 1, -1], [1, 1, -1]]
def printMatrix ( matrix ): for i in range ( len(matrix) ): for j in range ( len(matrix[i]) ): print ( «<:4d>».format(matrix[i][j]), end = «» ) print ()
В примере i – это номер строки, а j – номер столбца;
len(matrix) – число строк в матрице.
def printMatrix ( matrix ): for row in matrix: for x in row: print ( «<:4d>».format(x), end = «» ) print ()
Внешний цикл проходит по строкам матрицы (row), а внутренний цикл проходит по элементам каждой строки (x).
import random for i in range(N): for j in range(M): matrix[i][j] = random.randint ( 30, 60 ) print ( «<:4d>».format(matrix[i][j]), end = «» ) print()
Обработка элементов двумерного массива
Нумерация элементов двумерного массива, как и элементов одномерного массива, начинается с нуля.
Т.е. matrix[2][3] — это элемент третьей строки четвертого столбца.
p = 1 for i in range(N): for j in range(M): p *= matrix[i][j] print (p)
s = 0 for row in matrix: s += sum(row) print (s)
Для поиска суммы существует стандартная функция sum.
Номер станции1-й день2-й день3-й день4-й день1-8-14-19-18225282620311182025
Т.е. запись показаний в двумерном массиве выглядела бы так:
t[1,1]:=-8;t[1,2]:=-14;t[1,3]:=-19;t[1,4]:=-18;t[2,1]:=25;t[2,2]:=28;t[2,3]:=26;t[2,4]:=20;t[3,1]:=11;t[3,2]:=18;t[3,3]:=20;t[3,4]:=25;
- Распечатать температуру на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день.
- Распечатать показания термометров всех метеостанций за 2-й день.
- Определить среднюю температуру на 3-й метеостанции.
- Распечатать, в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.
for i in range(N): # работаем с matrix[i][i]
for i in range(N): # работаем с matrix[i][N-1-i]
Читайте также: Как перейти с двухтарифного счетчика на однотарифный
for i in range(N): c = A[i][2] A[i][2] = A[i][4] A[i][4] = c
for i in range(N): A[i][2], A[i][4] = A[i][4], A[i][2]
Эта статья открывает список уроков на тему “Линейная алгебра с примерами на Python“ . Мы постараемся рассказать о базовых понятиях линейной алгебры, которые могут быть полезны тем, кто занимается машинным обучением и анализом данных, и будем сопровождать все это примерами на языке Python .
Матрицы
Матрицей в математике называют объект, записываемый в виде прямоугольной таблицы, элементами которой являются числа (могут быть как действительные, так и комплексные). Пример матрицы приведен ниже.
В общем виде матрица записывается так:
Представленная выше матрица состоит из i-строк и j-столбцов. Каждый ее элемент имеет соответствующее позиционное обозначение, определяемое номером строки и столбца на пересечении которых он расположен: (a_)- находится на i-ой строке и j-м столбце.
Важным элементом матрицы является главная диагональ , ее составляют элементы, у которых совпадают номера строк и столбцов.
Виды матриц и способы их создания в Python
Матрица в Python – это двумерный массив, поэтому задание матриц того или иного вида предполагает создание соответствующего массива. Для работы с массивами в Python используется тип данных список (англ. list ). Но с точки зрения представления матриц и проведения вычислений с ними списки – не очень удобный инструмент, для этих целей хорошо подходит библиотека Numpy , ее мы и будем использовать в дальнейшей работе.
Напомним, для того, чтобы использовать библиотеку Numpy ее нужно предварительно установить, после этого можно импортировать в свой проект. По установке Numpy можно подробно прочитать в разделе “Установка библиотеки Numpy” из введения. Для того чтобы импортировать данный модуль, добавьте в самое начало программы следующую строку
Если после импорта не было сообщений об ошибке, то значит все прошло удачно и можно начинать работу. Numpy содержит большое количество функций для работы с матрицами, которые мы будем активно использовать. Обязательно убедитесь в том, что библиотека установлена и импортируется в проект без ошибок.
Рассмотрим, различные варианты матриц и способы их задания в Python .
Вектор
Вектором называется матрица, у которой есть только один столбец или одна строка. Более подробно свойства векторов, их геометрическая интерпретация и операции над ними будут рассмотрены в “ Главе 2 Векторная алгебра” .
Вектор-строка
Вектор-строка имеет следующую математическую запись.
Такой вектор в Python можно задать следующим образом.
Если необходимо создать нулевой или единичный вектор , то есть вектор, у которого все элементы нули либо единицы, то можно использовать специальные функции из библиотеки Numpy .
Создадим нулевую вектор-строку размера 5 .
В случае, если требуется построить вектор-строку так, чтобы она сама являлась элементом какого-то массива, это нужно для возможности транспонирования матрицы (см. раздел “ 1.3 Транспонирование матрицы” ), то данную задачу можно решить так.
Построим единичную вектор-строку в обоих из представленных для нулевого вектора-строки форм.
Вектор-столбец
Вектор-столбец имеет следующую математическую запись.
В общем виде вектор столбец можно задать следующим образом.
Рассмотрим способы создания нулевых и единичных векторов-столбцов. Построим нулевой вектор-столбец .
Единичный вектор-столбец можно создать с помощью функции ones() .
Квадратная матрица
Довольно часто, на практике, приходится работать с квадратными матрицами . Квадратной называется матрица, у которой количество столбцов и строк совпадает. В общем виде они выглядят так.
Читайте также: Как узнать пароль от роутера zte
Создадим следующую матрицу.
В Numpy можно создать квадратную матрицу с помощью метода array() .
Как вы уже наверное заметили, аргументом функции np.array() является список Python , его можно создать отдельно и передать в функцию.
Но в Numpy есть еще одни способ создания матриц – это построение объекта типа matrix с помощью одноименного метода. Задать матрицу можно в виде списка.
Также доступен стиль Matlab , когда между элементами ставятся пробелы, а строки разделяются точкой с запятой, при этом такое описание должно быть передано в виде строки.
Диагональная матрица
Особым видом квадратной матрицы является диагональная – это такая матрица, у которой все элементы, кроме тех, что расположены на главной диагонали, равны нулю.
Диагональную матрицу можно построить вручную, задав только значения элементам на главной диагонали.
Библиотека Numpy предоставляет инструменты, которые могут упростить построение такой матрицы.
Первый вариант подойдет в том случае, если у вас уже есть матрица, и вы хотите сделать из нее диагональную. Создадим матрицу размера 3 3 .
Извлечем ее главную диагональ.
Построим диагональную матрицу на базе полученной диагонали.
Второй вариант подразумевает построение единичной матрицы, ей будет посвящен следующий параграф.
Единичная матрица
Единичной матрицей называют такую квадратную матрицу, у которой элементы главной диагонали равны единицы, а все остальные нулю.
Создадим единичную матрицу на базе списка, который передадим в качестве аргумента функции matrix() .
Такой способ не очень удобен, к счастью для нас, для построения такого типа матриц в библиотеке Numpy есть специальная функция – eye() .
В качестве аргумента функции передается размерность матрицы, в нашем примере – это матрица 3 3 . Тот же результат можно получить с помощью функции identity() .
Нулевая матрица
У нулевой матрицы все элементы равны нулю.
Пример того, как создать такую матрицу с использованием списков, мы приводить не будем, он делается по аналогии с предыдущим разделом. Что касается Numpy , то в составе этой библиотеки есть функция zeros() , которая создает нужную нам матрицу.
В качестве параметра функции zeros() передается размерность требуемой матрицы в виде кортежа из двух элементов, первый из которых – число строк, второй – столбцов. Если функции zeros() передать в качестве аргумента число, то будет построен нулевой вектор-строка, это мы делали в параграфе, посвященном векторам.
Задание матрицы в общем виде
Если у вас уже есть данные о содержимом матрицы, то создать ее можно используя списки Python или функцию matrix() из библиотеки Numpy .
Если же вы хотите создать матрицу заданного размера с произвольным содержимым, чтобы потом ее заполнить, проще всего для того использовать функцию zeros() , которая создаст матрицу заданного размера, заполненную нулями.
P.S.
Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта . Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.