Линейная алгебра на python. [урок 3]. действия над матрицами
Содержание:
- Введение в Numpy
- Копии и представления
- Функции, определенные для массивов¶
- Печать массивов
- Пакеты в SciPy
- Нам доверяют
- 3.1. Тригонометрические функции
- 3.10. Прочие математические функции
- Ранг матрицы (в смысле линейной алгебры)
- Задачи
- 7.5. Дискретное преобразование Фурье
- 3.4. Суммы, разности, произведения
- Базовые функции
- Выбираем устройство загрузки
- Функции (методы) для расчета статистик в Numpy
- Навигация по записям
- Линейная алгебра
- Runtastic
- Как создаются матрицы в Python?
- Создание списков на Python
- Prerequisites¶
- Создание, вывод и ввод матрицы в Питоне
Введение в Numpy
Константы и функции numpy
np.pi | Число pi |
np.e | Число e |
np.cos | Косинус |
np.sin | Синус |
np.tan | Тангенс |
np.acos | Арккосинус |
np.asin | Арксинус |
np.atan | Арктангенс |
np.exp | Экспонента |
np.log | Логарифм натуральный |
np.log2 | Логарифм по основанию 2 |
np.log10 | Логарифм десятичный |
np.sqrt | x1/2 |
np.add, np.subtract, np.multiply, np.divide | +, -, *, / |
np.power(a, b) | a**b |
np.remainder(a, b) | остаток от деления a%b |
np.reciprocal(a) | 1/a |
np.real, np.imag, np.conj | действительная часть; мнимая часть; a+bj заменяется на a-bj |
np.sign | знак, 1, -1 или 0 |
np.abs | модуль |
np.floor, np.ceil, np.rint | преобразуем к целым числам |
np.round | округление с указанной точностью |
Агрегации
np.mean | среднее |
np.std | стандартное отклонение |
np.var | дисперсия |
np.sum | сумма всех элементов |
np.prod | произведение всех элементов |
np.cumsum | сумма всех элементов по указанной оси |
np.cumprod | произведение всех элементов по указанной оси |
np.min, np.max | минимальное и максимальное число в массиве |
np.argmin, np.argmax | индекс минимального и максимального числа в массиве |
np.all | True если все элементы в массиве НЕ 0 |
np.any | True если хоть один элемент в массиве не 0 |
In : data = np.arange(1,10).reshape(3,3) In : data Out: array(, , ]) In : data.sum() Out: 45 In : data.sum(axis=0) Out: array() In : data.sum(axis=1) Out: array()
sort — сортировка массива
>>> a = np.array(,]) >>> np.sort(a) array(, ]) >>> np.sort(a, axis=) array() >>> np.sort(a, axis=0) array(, ])
Сравнение массивов
>>> a == b array(, ], dtype=bool) >>> a < 2 array(, dtype=bool) >>> np.array_equal(a, b)
In : a = np.array() In : b = np.array() In : a < b Out: array(, dtype=bool) In : np.all(a < b) Out: False In : np.any(a < b) Out: True In : np.all(a < b): ...: ("All elements a are smaller than their corresponding element b") ...: np.any(a < b): ...: ("Some elements a are smaller than their corresponding elemment b") ...: : ...: ("All elements b are smaller than their corresponding element a") Some elements a are smaller than their corresponding elemment b
Как заставить свою функцию работать с векторами
In : heaviside(x): ...: 1 x > 0 0 In : heaviside(-1) Out: 0 In : heaviside(1.5) Out: 1 In : x = np.linspace(-5, 5, 11) In : heaviside(x) ... : The truth value of an array with more than one element ambiguous. Use a.any() a.all() In : vheaviside = np.vectorize(heaviside) In : vheaviside(x) Out: array()
Копии и представления
При работе с массивами, их данные иногда необходимо копировать в другой массив, а иногда нет. Это часто является источником путаницы. Возможно 3 случая:
Вообще никаких копий
Простое присваивание не создает ни копии массива, ни копии его данных:
>>> a = np.arange(12) >>> b = a # Нового объекта создано не было >>> b is a # a и b это два имени для одного и того же объекта ndarray True >>> b.shape = (3,4) # изменит форму a >>> a.shape (3, 4)
Python передает изменяемые объекты как ссылки, поэтому вызовы функций также не создают копий.
Представление или поверхностная копия
Разные объекты массивов могут использовать одни и те же данные. Метод view() создает новый объект массива, являющийся представлением тех же данных.
>>> c = a.view() >>> c is a False >>> c.base is a # c это представление данных, принадлежащих a True >>> c.flags.owndata False >>> >>> c.shape = (2,6) # форма а не поменяется >>> a.shape (3, 4) >>> c,4 = 1234 # данные а изменятся >>> a array(, , ])
Срез массива это представление:
>>> s = a = 10 >>> a array(, , ])
Глубокая копия
Метод copy() создаст настоящую копию массива и его данных:
>>> d = a.copy() # создается новый объект массива с новыми данными >>> d is a False >>> d.base is a # d не имеет ничего общего с а False >>> d, = 9999 >>> a array(, , ])
Функции, определенные для массивов¶
Алгебраические функции
Функця | Описание |
---|---|
isreal(x) | проверка на действительность (по элементам) |
iscomplex(x) | проверка на комплексность (по элементам) |
isfinite(x) | приверка элементов на числовое значение (не бесконечность и не «не число»). |
isinf(x) | проверка на бесконечность (по элементам) |
isnan(x) | проверка аргумента на «не число» (NaN), результат – логический массив |
signbit(x) | истина, если установлен бит знака (меньше нуля) |
copysign(x1, x2) | меняет знак x1 на знак x2 (по элементам |
nextafter(x1, x2) | следующее в направлении x2 число, представимое в виде с плавающей точкой (по элементам) |
modf(x) | дробная и целая часть числа |
ldexp(x1, x2) | вычисляет y = x1 * 2**x2. |
frexp(x) | разделение числа на нормированную часть и степень |
absolute(x) | Calculate the absolute value element-wise. |
rint(x) | округление элементов массива |
trunc(x) | отбрасывание дробной части (по элементам) |
floor(x) | целая часть |
ceil(x) | минимальное целое большее числа |
sign(x) | знаки элементов |
conj(x) | комплексное сопряжение (по элементам). |
exp(x) | экспонента (по элементам) |
exp2(x) | 2**элемент (по элементам) |
log(x) | натуральный логарифм (по элементам) |
log2(x) | двоичный логарифм (по элементам) |
log10(x) | десятичный логарифм (по элементам) |
expm1(x) | exp(x) — 1 (по элементам) |
log1p(x) | Return the natural logarithm of one plus the input array, element-wise. |
sqrt(x) | квадратный корень (для положительных) (по элементам) |
square(x) | квадрат (по элементам) |
reciprocal(x) | обратная величина (по элементам) |
- x – массив
- out – место для результата
Тригонометрические функции
Все тригонометрические функции работают с радианами.
Функция | Обратная функция | Описание |
---|---|---|
sin(x) | arcsin(x) | синус (по элементам) |
cos(x) | arccos(x) | косинус (по элементам) |
tan(x) | arctan(x) | тангенс (по элементам) |
arctan2(x1, x2) | арктангенс x1/x2 с правильным выбором четверти (по элементам) | |
hypot(x1, x2) | гипотенуза по двум катетам (по элементам) | |
sinh(x) | arcsinh(x) | гиперболический синус (по элементам) |
cosh(x) | arccosh(x) | гиперболический косинус (по элементам) |
tanh(x) | arctanh(x) | гиперболический тангенс (по элементам) |
deg2rad(x) | rad2deg(x) | преобразование градусов в радианы (по элементам) |
- x, x1, x2 – массивы
- out – место для результата
Функции двух аргументов (бинарные функции)
Для правильной работы с логическими бинарными функциям (AND, OR) необходимо явно их записывать через функции
модуля «NumPy», а не полагаться на встроенные функции питона.
Функция | Описание |
---|---|
add(x1, x2) | сумма (по элементам) |
subtract(x1, x2) | разность (по элементам) |
multiply(x1, x2) | произведение (по элементам) |
divide(x1, x2) | деление (по элементам) |
logaddexp(x1, x2) | логарифм суммы экспонент (по элементам) |
logaddexp2(x1, x2) | логарифм по основанию 2 от суммы экспонент (по элементам) |
true_divide(x1, x2) | истинное деление (с преобразованием типов) |
floor_divide(x1, x2) | деление без преобразования типов (целочисленное) |
negative(x) | обратные элементы (по элементам) |
power(x1, x2) | элементы первого массива в степени элементов из второго массива (по элементам) |
remainder(x1, x2), mod(x1, x2), fmod(x1, x2) | остаток от деления (по элементам). |
greater(x1, x2) | истина, если (x1 > x2) (по элементам). |
greater_equal(x1, x2) | истина, если (x1 > =x2) (по элементам). |
less(x1, x2) | истина, если (x1 < x2) (по элементам). |
less_equal(x1, x2) | истина, если (x1 =< x2) (по элементам). |
not_equal(x1, x2) | истина, если (x1 != x2) (по элементам). |
equal(x1, x2) | истина, если (x1 == x2) (по элементам). |
logical_and(x1, x2) | истина, если (x1 AND x2) (по элементам). |
logical_or(x1, x2) | истина, если (x1 OR x2) (по элементам). |
logical_xor(x1, x2) | истина, если (x1 XOR x2) (по элементам). |
logical_not(x) | истина, если (NOT x1) (по элементам). |
maximum(x1, x2) | максимум из элементов двух массивов(по элементам). |
- x1, x2 – массивы
- out – место для результата
Бинарные функции поддерживают дополнительные методы, позволяющие накапливать значения результата различными
способами.
- accumulate() Аккумулирование результата.
- outer() Внешнее «произведение».
- reduce() Сокращение.
- reduceat() Сокращение в заданных точках.
Методы accumulate(), reduce() и reduceat() принимают необязательный аргумент — номер размерности, используемой
для соответствующего действия. По умолчанию применяется нулевая размерность.
Печать массивов
Если массив слишком большой, чтобы его печатать, NumPy автоматически скрывает центральную часть массива и выводит только его уголки.
>>> print(np.arange(, 3000, 1))
Если вам действительно нужно увидеть весь массив, используйте функцию numpy.set_printoptions:
np.set_printoptions(threshold=np.nan)
И вообще, с помощью этой функции можно настроить печать массивов «под себя». Функция numpy.set_printoptions принимает несколько аргументов:
precision : количество отображаемых цифр после запятой (по умолчанию 8).
threshold : количество элементов в массиве, вызывающее обрезание элементов (по умолчанию 1000).
edgeitems : количество элементов в начале и в конце каждой размерности массива (по умолчанию 3).
linewidth : количество символов в строке, после которых осуществляется перенос (по умолчанию 75).
suppress : если True, не печатает маленькие значения в scientific notation (по умолчанию False).
nanstr : строковое представление NaN (по умолчанию ‘nan’).
infstr : строковое представление inf (по умолчанию ‘inf’).
formatter : позволяет более тонко управлять печатью массивов. Здесь я его рассматривать не буду, можете почитать здесь (на английском).
И вообще, пользуйтесь официальной документацией по numpy, а в этом пособии я постараюсь описать всё необходимое. В следующей части мы рассмотрим базовые операции над массивами.
Подписывайтесь, чтобы не пропустить 🙂
Пакеты в SciPy
В SciPy есть набор пакетов для разных научных вычислений:
Название | Описание |
---|---|
Алгоритмы кластерного анализа | |
Физические и математические константы | |
Быстрое преобразование Фурье | |
Решения интегральных и обычных дифференциальных уравнений | |
Интерполяция и сглаживание сплайнов | |
Ввод и вывод | |
Линейная алгебра | |
N-размерная обработка изображений | |
Метод ортогональных расстояний | |
Оптимизация и численное решение уравнений | |
Обработка сигналов | |
Разреженные матрицы | |
Разреженные и алгоритмы | |
Специальные функции | |
Статистические распределения и функции |
Подробное описание можно найти в официальной документации.
Эти пакеты нужно импортировать для использования библиотеки. Например:
Прежде чем рассматривать каждую функцию в подробностях, разберемся с теми из них, которые являются одинаковыми в NumPy и SciPy.
Нам доверяют
3.1. Тригонометрические функции
- Тригонометрический синус.
- Тригонометрический косинус.
- Тригонометрический тангенс.
- Обратный тригонометрический синус.
- Обратный тригонометрический косинус.
- Обратный тригонометрический тангенс.
- Вычисляет длинну гипотенузы по указанным длинам катетов.
- Обратный тригонометрический тангенс угла где x1 — противолежащий катет, x2 — прилежащий катет. В отличие от arctan (x) функция arctan2 (y, x) справедлива для всех углов и поэтому может быть использована для преобразования вектора в угол без риска деления на ноль, а также возвращает результат в правильном квадранте.
- Преобразует радианную меру угла в градусную.
- Преобразует градусную меру угла в радианную.
- Корректировка фазовых углов при переходе через значение pi.
- Преобразует градусную меру угла в радианную.
- Преобразует радианную меру угла в градусную.
3.10. Прочие математические функции
- Дискретная линейная свертка.
- Ограничение значений массивов указанным интервалом допустимых значений.
- Квадратный корень элементов массива.
- Кубический корень элементов массива.
- Квадрат элементов массива.
- Абсолютное значение (модуль) элементов массива.
- Возвращает абсолютное значение (модуль) элементов массива в виде чисел с плавающей точкой.
- Элементарный указатель на знак числа.
- Ступенчатая функция Хевисайда.
- Наибольшие значения после поэлементного сравнения значений массивов.
- Наименьшие значения после поэлементного сравнения значений массивов.
- Наибольшие значения после поэлементного сравнения значений массивов в виде чисел с плавающей точкой.
- Наименьшие значения после поэлементного сравнения значений массивов в виде чисел с плавающей точкой.
- Заменяет nan на 0, бесконечность и минус-бесконечность заменяются на наибольшее и наименьшее доступное число с плавающей точкой соответственно.
- Переводит комплексные числа в вещественные если мнимая часть комплексного числа меньше машинной эпсилон.
- Одномерная линейная интерполяция.
Ранг матрицы (в смысле линейной алгебры)
numpy.linalg.matrix_rank
In : a = (, ]) In : np.linalg.matrix_rank(a) Out: 2 In : b = (, , ]) In : np.linalg.matrix_rank(b) Out: 2
numpy as np numpy.linalg inv, det, solve a = np.array(, ]) (a) ai = inv(a) (ai)
Задачи
- Определить единичную матрицу 5х5
- Сохранить этот текст в файл. Прочитать матрицу из файла.
3,4,17,-3 5,11,-1,6 0,2,-5,8
- Матрица задана в файле по формату
- количество строк
- количество столбцов
- точность вычислений (в этой задаче не используется, но в файле дана)
- далее матрица, как в предыдущей задаче (по строкам, через запятую)
- Сохранить этот текст в файл. Прочитать матрицу из файла.
- Напечатать ТОЛЬКО матрицу
- вычислить детерминант матрицы
3 4 0.01 3,4,17,-3 5,11,-1,6 0,2,-5,8
- Учебник по линейной алгебре
- страница 11, номера:
- 5 (а, б, г, д); в задаче 5а матрицу В создать через функцию zeros и присвоение потом 1 нужному элементу.
- 9 (а, б, г, д)
- 8 (a, в, г, д, е), — решите с помощью обратных матриц и умножения; если решения не существует, вычислите ранг и детерминант матриц
- страница 21, номера 17 и 19 — по вариантам
- страница 11, номера:
19a | 1 | 2 | 3 |
---|---|---|---|
19б | 4 | 5 | 6 |
19в | 7 | 8 | 9 |
19г | 10 | 11 | 12 |
ответы для самопроверки
7.5. Дискретное преобразование Фурье
Если данные в ваших массивах — это сигналы: звуки, изображения, радиоволны, котировки акций и т.д., то вам наверняка понадобится дискретное преобразование Фурье. В NumPy представлены методы быстрого дискретного преобразования Фурье для одномерных, двумерных и многомерных сигналов, а так же некоторые вспомогательные функции. Рассмотрим некоторые простые примеры.
Одномерное дискретное преобразование Фурье:
Двумерное дискретное преобразование Фурье:
Очень часто при спектральном анализе используются оконные функции (оконное преобразование Фурье), некоторые из которых так же представлены в NumPy
3.4. Суммы, разности, произведения
- Произведение элементов массива по заданной оси.
- Сумма элементов массива по заданной оси.
- Произведение элементов массива по заданной оси в котором элементы NaN учитываются как 1.
- Сумма элементов массива по заданной оси в котором элементы NaN учитываются как 0.
- Возвращает накопление произведения элементов по заданной оси, т.е. массив в котором каждый элемент является произведением предшествующих ему элементов по заданной оси в исходном массиве.
- Возвращает накопление суммы элементов по заданной оси, т.е. массив в котором каждый элемент является суммой предшествующих ему элементов по заданной оси в исходном массиве.
- Возвращает накопление произведения элементов по заданной оси, т.е. массив в котором каждый элемент является произведением предшествующих ему элементов по заданной оси в исходном массиве. Элементы NaN в исходном массиве при произведении учитываются как 1.
- Возвращает накопление суммы элементов по заданной оси, т.е. массив в котором каждый элемент является суммой предшествующих ему элементов по заданной оси в исходном массиве. Элементы NaN в исходном массиве при суммировании учитываются как 0.
- Возвращает n-ю разность вдоль указанной оси.
- Разность между последовательными элементами массива.
- Дискретный градиент (конечные разности вдоль осей) массива .
- Векторное произведение двух векторов.
- Интегрирование массива вдоль указанной оси методом трапеций.
Базовые функции
Взаимодействие с NumPy
SciPy построена на базе NumPy, поэтому можно использовать функции последней для работы с массивами. Чтобы узнать о них подробнее, используйте функции , или .
help():
Функция подойдет для получения информации о любой функции. Ее можно использовать двумя способами:
- Без параметров
- С параметрами
Вот пример для обоих:
При исполнении этого кода, первая вернет информацию о подмодуле . А вторая — попросит пользователя ввести название модуля, ключевого слова и др., о чем требуется предоставить дополнительную информацию. Для выхода достаточно ввести и нажать Enter.
info():
Эта функция возвращает информацию о конкретных функциях, модулях и так далее.
source():
Исходный код можно получить только для тех объектов, которые были написаны на Python
Функция не вернет ничего важного, если методы или объекты были написаны, например, на C. Синтаксис простой:
Выбираем устройство загрузки
Функции (методы) для расчета статистик в Numpy
Ниже, в таблице, приведены методы объекта ndarray (или matrix), которые, как мы помним из раздела выше, могут быть также вызваны как функции библиотеки Numpy, для расчета статистик по данным массива.
Имя метода | Описание |
argmax | Индексы элементов с максимальным значением (по осям) |
argmin | Индексы элементов с минимальным значением (по осям) |
max | Максимальные значения элементов (по осям) |
min | Минимальные значения элементов (по осям) |
mean | Средние значения элементов (по осям) |
prod | Произведение всех элементов (по осям) |
std | Стандартное отклонение (по осям) |
sum | Сумма всех элементов (по осям) |
var | Дисперсия (по осям) |
Вычислим некоторые из представленных выше статистик.
>>> m.mean() 4.833333333333333 >>> m.mean(axis=1) matrix(, , ]) >>> m.sum() 58 >>> m.sum(axis=0) matrix(])
Навигация по записям
Линейная алгебра
Линейная алгебра работает с линейными уравнениями и их представлениями с помощью векторных пространств и матриц. SciPy построена на базе библиотек ATLAS LAPACK и BLAS и является очень быстрой в сфере решения проблем, связанных с линейной алгеброй. В дополнение к функциям из также предоставляет набор продвинутых функций. Если не используется вместе с ATLAS LAPACK и BLAS, то работает намного быстрее.
Нахождение обратной матрицы
С математической точки зрения обратная матрица A — это матрица B, где AB = I, а I — это единичная матрица, состоящая из единиц по диагонали. Это можно обозначить как B=A-1. В SciPy такого можно добиться с помощью метода .
Пример:
Вывод:
Нахождение определителей
Значение, полученное арифметическим путем из коэффициентов матрицы является определителем квадратной матрицы. В SciPy это делается с помощью функции с таким синтаксисом:
— (M, M) — это квадратная матрица
— разрешает перезаписывать данные
— для проверки состоит ли матрица только из конечных чисел
Пример:
Вывод:
Runtastic
Как создаются матрицы в Python?
Добавление и модификация массивов или матриц (matrix) в Python осуществляется с помощью библиотеки NumPy. Вы можете создать таким образом и одномерный, и двумерный, и многомерный массив. Библиотека обладает широким набором пакетов, которые необходимы, чтобы успешно решать различные математические задачи. Она не только поддерживает создание двумерных и многомерных массивов, но обеспечивает работу однородных многомерных матриц.
Чтобы получить доступ и начать использовать функции данного пакета, его импортируют:
import numpy as np
Функция array() — один из самых простых способов, позволяющих динамически задать одно- и двумерный массив в Python. Она создаёт объект типа ndarray:
array = np.array(/* множество элементов */)
Для проверки используется функция array.type() — принимает в качестве аргумента имя массива, который был создан.
Если хотите сделать переопределение типа массива, используйте на стадии создания dtype=np.complex:
array2 = np.array([ /*элементы*/, dtype=np.complex)
Когда стоит задача задать одномерный или двумерный массив определённой длины в Python, и его значения на данном этапе неизвестны, происходит его заполнение нулями функцией zeros(). Кроме того, можно получить матрицу из единиц через функцию ones(). При этом в качестве аргументов принимают число элементов и число вложенных массивов внутри:
np.zeros(2, 2, 2)
К примеру, так в Python происходит задание двух массивов внутри, которые по длине имеют два элемента:
array(] ]] )
Если хотите вывести одно- либо двумерный массив на экран, вам поможет функция print(). Учтите, что если матрица слишком велика для печати, NumPy скроет центральную часть и выведет лишь крайние значения. Дабы увидеть массив полностью, используется функция set_printoptions(). При этом по умолчанию выводятся не все элементы, а происходит вывод только первой тысячи. И это значение массива указывается в качестве аргумента с ключевым словом threshold.
Создание списков на Python
- Создать список можно несколькими способами. Рассмотрим их.
1. Получение списка через присваивание конкретных значений
Так выглядит в коде Python пустой список:
s = # Пустой список |
Примеры создания списков со значениями:
l = 25, 755, -40, 57, -41 # список целых чисел l = 1.13, 5.34, 12.63, 4.6, 34.0, 12.8 # список из дробных чисел l = "Sveta", "Sergei", "Ivan", "Dasha" # список из строк l = "Москва", "Иванов", 12, 124 # смешанный список l = , , , 1, , 1, 1, 1, # список, состоящий из списков l = 's', 'p', 'isok', 2 # список из значений и списка |
2. Списки при помощи функции List()
Получаем список при помощи функции List()
empty_list = list() # пустой список l = list ('spisok') # 'spisok' - строка print(l) # - результат - список |
4. Генераторы списков
- В python создать список можно также при помощи генераторов, — это довольно-таки новый метод:
- Первый простой способ.
Сложение одинаковых списков заменяется умножением:
# список из 10 элементов, заполненный единицами l = 1*10 # список l = |
Второй способ сложнее.
l = i for i in range(10) # список l = |
или такой пример:
c = c * 3 for c in 'list' print (c) # |
Пример:
Заполнить список квадратами чисел от 0 до 9, используя генератор списка.
Решение:
l = i*i for i in range(10) |
еще пример:
l = (i+1)+i for i in range(10) print(l) # |
Случайные числа в списке:
from random import randint l = randint(10,80) for x in range(10) # 10 чисел, сгенерированных случайным образом в диапазоне (10,80) |
Задание Python 4_1:
Создайте список целых чисел от -20 до 30 (генерация).
Результат:
Задание Python 4_2:
Создайте список целых чисел от -10 до 10 с шагом 2 (генерация list).
Результат:
Задание Python 4_3:
Создайте список из 20 пятерок (генерация).
Результат:
Задание Python 4_4:
Создайте список из сумм троек чисел от 0 до 10, используя генератор списка (0 + 1 + 2, 1 + 2 + 3, …).
Результат:
Задание Python 4_5 (сложное):
Заполните массив элементами арифметической прогрессии. Её первый элемент, разность и количество элементов нужно ввести с клавиатуры.
* Формула для получения n-го члена прогрессии: an = a1 + (n-1) * d
Простейшие операции над списками
- Списки можно складывать (конкатенировать) с помощью знака «+»:
l = 1, 3 + 4, 23 + 5 # Результат: # l = |
33, -12, 'may' + 21, 48.5, 33 # |
или так:
a=33, -12, 'may' b=21, 48.5, 33 print(a+b)# |
Операция повторения:
,,,1,1,1 * 2 # , , , , , ] |
Пример:
Для списков операция переприсваивания значения отдельного элемента списка разрешена!:
a=3, 2, 1 a1=; print(a) # |
Можно!
Задание 4_6:
В строке записана сумма натуральных чисел: ‘1+25+3’. Вычислите это выражение. Работать со строкой, как со списком.
Начало программы:
s=input('введите строку') l=list(str(s)); |
Как узнать длину списка?
Prerequisites¶
Before reading this tutorial you should know a bit of Python. If you
would like to refresh your memory, take a look at the Python
tutorial.
If you wish to work the examples in this tutorial, you must also have
some software installed on your computer. Please see
https://scipy.org/install.html for instructions.
Learner profile
This tutorial is intended as a quick overview of
algebra and arrays in NumPy and want to understand how n-dimensional
() arrays are represented and can be manipulated. In particular, if
you don’t know how to apply common functions to n-dimensional arrays (without
using for-loops), or if you want to understand axis and shape properties for
n-dimensional arrays, this tutorial might be of help.
Learning Objectives
After this tutorial, you should be able to:
Создание, вывод и ввод матрицы в Питоне
- Таким образом, получается структура из вложенных списков, количество которых определяет количество строк матрицы, а число элементов внутри каждого вложенного списка указывает на количество столбцов в исходной матрице.
Рассмотрим пример матрицы размера 4 х 3:
matrix = -1, , 1, -1, , 1, , 1, -1, 1, 1, -1 |
Данный оператор можно записать в одну строку:
matrix = -1, , 1, -1, , 1, , 1, -1, 1, 1, -1 |
Вывод матрицы можно осуществить одним оператором, но такой простой способ не позволяет выполнять какой-то предварительной обработки элементов:
print(matrix) |
Результат:
Для вывода матрицы в виде таблицы можно использовать специально заготовленную для этого процедуру:
- способ:
1 2 3 4 5 |
def printMatrix ( matrix ): for i in range ( len(matrix) ): for j in range ( len(matrixi) ): print ( "{:4d}".format(matrixij), end = "" ) print () |
В примере i – это номер строки, а j – номер столбца;len(matrix) – число строк в матрице.
способ:
1 2 3 4 5 |
def printMatrix ( matrix ): for row in matrix: for x in row: print ( "{:4d}".format(x), end = "" ) print () |
Внешний цикл проходит по строкам матрицы (row), а внутренний цикл проходит по элементам каждой строки (x).
Для инициализации элементов матрицы случайными числами используется алгоритм:
1 2 3 4 5 6 |
import random for i in range(N): for j in range(M): matrixij = random.randint ( 30, 60 ) print ( "{:4d}".format(matrixij), end = "" ) print() |