Замена столбцов матрицы python

Обновлено: 04.07.2024

Здравствуйте! Я продолжаю работу над пособием по python-библиотеке NumPy.

В прошлой части мы научились создавать массивы и их печатать. Однако это не имеет смысла, если с ними ничего нельзя делать.

Сегодня мы познакомимся с операциями над массивами.

Базовые операции

Математические операции над массивами выполняются поэлементно. Создается новый массив, который заполняется результатами действия оператора.

Для этого, естественно, массивы должны быть одинаковых размеров.

Также можно производить математические операции между массивом и числом. В этом случае к каждому элементу прибавляется (или что вы там делаете) это число.

NumPy также предоставляет множество математических операций для обработки массивов:

Полный список можно посмотреть здесь.

Многие унарные операции, такие как, например, вычисление суммы всех элементов массива, представлены также и в виде методов класса ndarray.

По умолчанию, эти операции применяются к массиву, как если бы он был списком чисел, независимо от его формы. Однако, указав параметр axis, можно применить операцию для указанной оси массива:

Индексы, срезы, итерации

Одномерные массивы осуществляют операции индексирования, срезов и итераций очень схожим образом с обычными списками и другими последовательностями Python (разве что удалять с помощью срезов нельзя).

У многомерных массивов на каждую ось приходится один индекс. Индексы передаются в виде последовательности чисел, разделенных запятыми (то бишь, кортежами):

Когда индексов меньше, чем осей, отсутствующие индексы предполагаются дополненными с помощью срезов:

b[i] можно читать как b[i, <столько символов ':', сколько нужно>]. В NumPy это также может быть записано с помощью точек, как b[i, . ].

Например, если x имеет ранг 5 (то есть у него 5 осей), тогда

  • x[1, 2, . ] эквивалентно x[1, 2, :, :, :],
  • x[. , 3] то же самое, что x[:, :, :, :, 3] и
  • x[4, . , 5, :] это x[4, :, :, 5, :].

Итерирование многомерных массивов начинается с первой оси:

Однако, если нужно перебрать поэлементно весь массив, как если бы он был одномерным, для этого можно использовать атрибут flat:

Манипуляции с формой

Как уже говорилось, у массива есть форма (shape), определяемая числом элементов вдоль каждой оси:

Форма массива может быть изменена с помощью различных команд:

Порядок элементов в массиве в результате функции ravel() соответствует обычному "C-стилю", то есть, чем правее индекс, тем он "быстрее изменяется": за элементом a[0,0] следует a[0,1]. Если одна форма массива была изменена на другую, массив переформировывается также в "C-стиле". Функции ravel() и reshape() также могут работать (при использовании дополнительного аргумента) в FORTRAN-стиле, в котором быстрее изменяется более левый индекс.

Метод reshape() возвращает ее аргумент с измененной формой, в то время как метод resize() изменяет сам массив:

Если при операции такой перестройки один из аргументов задается как -1, то он автоматически рассчитывается в соответствии с остальными заданными:

Объединение массивов

Несколько массивов могут быть объединены вместе вдоль разных осей с помощью функций hstack и vstack.

hstack() объединяет массивы по первым осям, vstack() — по последним:

Функция column_stack() объединяет одномерные массивы в качестве столбцов двумерного массива:

Аналогично для строк имеется функция row_stack().

Разбиение массива

Используя hsplit() вы можете разбить массив вдоль горизонтальной оси, указав либо число возвращаемых массивов одинаковой формы, либо номера столбцов, после которых массив разрезается "ножницами":

Функция vsplit() разбивает массив вдоль вертикальной оси, а array_split() позволяет указать оси, вдоль которых произойдет разбиение.

Копии и представления

При работе с массивами, их данные иногда необходимо копировать в другой массив, а иногда нет. Это часто является источником путаницы. Возможно 3 случая:

Вообще никаких копий

Простое присваивание не создает ни копии массива, ни копии его данных:

Python передает изменяемые объекты как ссылки, поэтому вызовы функций также не создают копий.

Представление или поверхностная копия

Разные объекты массивов могут использовать одни и те же данные. Метод view() создает новый объект массива, являющийся представлением тех же данных.

Мы можем реализовать матрицу Python в форме 2-го списка или 2-го массива. Для выполнения операций с Python Matrix нам необходимо импортировать Python NumPy Module.

Matrix важен в области статистики, обработки данных, обработки изображений и т. д.

Python Matrix объяснение

Создание матрицы Python

Матрицу Python можно создать одним из следующих способов:

  • Используя списки
  • Используя метод arange()
  • и метода matrix()

1 С использованием списков

numpy.array() можно использовать для создания массива, используя списки в качестве входных данных.

Как видно выше, выходные данные представляют собой двумерную матрицу с заданным набором входных данных в виде списка.

2 С помощью функции numpy.arange()

numpy.arange() вместе со списком входов.

3 С помощью функции numpy.matrix().

Функция numpy.matrix() , ее синтаксис:

  • input: элементы input для формирования матрицы.
  • dtype: тип данных соответствующего вывода.

Сложение

Операцию сложения матриц можно выполнить следующими способами:

1 Традиционный метод

Примечание. Matrix.shape возвращает размеры конкретной матрицы.

Этот метод обеспечивает большую эффективность кода, поскольку он уменьшает LOC (количество строк кода) и, таким образом, оптимизирует код.

Умножение матриц

Умножение матриц в Python можно обеспечить следующими способами:

  • Скалярное произведение;
  • Матричный продукт.

Скалярное произведение

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

Функция numpy.dot()

Функция numpy.dot() принимает массивы NumPy в качестве значений параметров и выполняет умножение в соответствии с основными правилами умножения матриц.

Вычитание

Деление

Транспонирование матрицы

Транспонирование матрицы в основном включает в себя переворачивание матрицы по соответствующим диагоналям, т. е. Меняет местами строки и столбцы входной матрицы. Строки становятся столбцами и наоборот.

Например: давайте рассмотрим матрицу A с размерами 3 × 2, т.е. 3 строки и 2 столбца. После выполнения операции транспонирования размеры матрицы A будут 2 × 3, т.е. 2 строки и 3 столбца.

Matrix.T основном выполняет транспонирование входной матрицы и создает новую в результате операции транспонирования.

В приведенном выше фрагменте кода я создал матрицу размером 2 × 5, т.е. 2 строки и 5 столбцов.

После выполнения операции транспонирования размеры результирующей матрицы составляют 5 × 2, то есть 5 строк и 2 столбца.

Экспонента

Экспонента в матрице вычисляется поэлементно, то есть показатель степени каждого элемента вычисляется путем возведения элемента в степень входного скалярного значения.

В приведенном выше фрагменте кода мы выяснили показатель степени каждого элемента входной матрицы, возведя его в степень 2.

Операция умножения с использованием методов NumPy

Для выполнения умножения матрицы NumPy можно использовать следующие методы:

В этой статье мы познакомим вас с матрицей Python. Каждую операцию матрицы мы будем реализовывать с помощью кода.

Что такое матрица в Python?

Мы изучим следующие операции, которые применяются к матрицам:

  • сложение матриц;
  • матричное вычитание;
  • умножение матриц;
  • скалярное произведение;
  • векторное произведение;
  • и многие другие операции.

Работа матриц

Создание матрицы в Python

Мы можем создать матрицу на Python, используя вложенный список. Все элементы заключаются в квадратные скобки ([]) и разделяются запятой. Посмотрим на следующие примеры:

Чтение матричных данных

Прочитаем каждую строку определенной матрицы.

В следующем примере мы прочитаем последний элемент каждой строки с помощью программы Python.

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

Давайте разберемся со следующей работой матрицы.

Добавление двух матриц

Мы добавим две матрицы и, используя вложенный цикл for, пройдемся по заданным матрицам.

Умножение двух матриц

Умножение двух матриц такое же, как в приведенном выше коде, только нужно изменить оператор + на *.

Транспонирование матрицы

В приведенном выше коде у нас есть два цикла for для перебора каждой строки и каждого столбца. Как мы видим, в приведенном выше выводе мы присвоили mat1 [i] [j] и res [j] [k].

Транспонирование с помощью списка

Мы можем использовать значение списка, чтобы транспонировать матрицу с одной строкой кода.

Результат такой же, как и выше. Значение списка сократило количество строк кода и транспонировало матрицу.

Получение матричного ввода от пользователя

До сих пор мы обсуждали предварительно определенные матрицы. Но что, если пользователь хочет ввести свои данные. Итак, разберем следующий пример пользовательской матрицы.

В приведенном выше коде мы взяли данные пользователя, чтобы ввести количество строк и столбцов. Мы ввели 3 строки и 3 столбца; это означает, что в матрице будет 9 элементов. В цикле for элементы вставляются в пустую матрицу с помощью функции append(). Второй цикл for используется для печати входных данных в матричном формате.

Использование функции NumPy и map()

Python предоставляет внешнюю библиотеку NumPy. Она используется для научных вычислений; мы изучим NumPy с матрицей в разделе ниже и используем ее для матрицы пользовательского ввода.

Пример: Создание матрицы с использованием библиотеки NumPy

Библиотека NumPy помогает нам работать с массивом. Чтобы работать с NumPy, нам нужно установить ее, используя следующую команду.

После успешной установки мы должны импортировать ее в нашу программу.

Давайте разберемся в следующем примере.

Работа с матрицей с помощью NumPy

Мы можем выполнять все операции с матрицей, используя numpy.array(), такие как сложение, вычитание, транспонирование, нарезание матрицы и т. д.

Добавление матрицы

Мы создадим две матрицы с помощью функции numpy.array() и добавим их с помощью оператора +. Давайте разберемся в следующем примере.

Умножение

Мы будем использовать метод numpy.dot() для умножения обеих матриц. Это точечное умножение матриц mat1 и mat2, обрабатывает 2D-массив и выполняет умножение.

Нарезка элементов

Мы можем разрезать элемент матрицы, как в стандартном списке Python. Нарезка возвращает элемент на основе индекса начала / конца. Мы также можем сделать отрицательную нарезку. Синтаксис приведен ниже.

Теперь мы реализуем нарезку по матрице. Для выполнения следуйте синтаксису ниже.

Mat1 [row_start: row_end, col_start: col_end]

В приведенном выше синтаксисе:

  • Первое начало / конец представляет строки, которые означают выбор строк матрицы.
  • Первое начало / конец представляет столбцы, которые означают выбор столбца матрицы.

Мы будем выполнять нарезку в приведенной ниже матрице.

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

Заключение


Эта матрица является матрицей три на четыре, потому что она состоит из 3 строк и 4 столбцов.

Матрицы в Python

Python не имеет встроенного типа данных для матриц. Но можно рассматривать список как матрицу. Например:

Этот список является матрицей на 2 строки и 3 столбца.

Обязательно ознакомьтесь с документацией по спискам Python , прежде чем продолжить читать эту статью.

Давайте посмотрим, как работать с вложенным списком.

Использование вложенных списков в качестве матрицы подходит для простых вычислительных задач. Но в Python есть более эффективный способ работы с матрицами – NumPy .

NumPy массивы в Python

  • Ознакомьтесь: Как установить NumPy Python?
  • Если вы работаете в Windows, скачайте и установите дистрибутив anaconda Python. Он поставляется вместе с NumPy и другими расширениями.

После установки NumPy можно импортировать и использовать его.

NumPy предоставляет собой многомерный массив чисел (который на самом деле является объектом). Давайте рассмотрим приведенный ниже пример:

Как видите, класс массива NumPy называется ndarray.

Как создать массив NumPy?

Существует несколько способов создания массивов NumPy.

Массив целых чисел, чисел с плавающей точкой и составных чисел

Когда вы запустите эту программу, результат будет следующий:

Массив нулей и единиц

Использование arange() и shape()

Узнайте больше о других способах создания массива NumPy .

Операции с матрицами

Выше мы привели пример сложение, умножение матриц и транспонирование матрицы. Мы использовали вложенные списки, прежде чем создавать эти программы. Рассмотрим, как выполнить ту же задачу, используя массив NumPy.

Сложение двух матриц или сумма элементов массива Python

Мы используем оператор +, чтобы сложить соответствующие элементы двух матриц NumPy.

Умножение двух матриц Python

Чтобы умножить две матрицы, мы используем метод dot(). Узнайте больше о том, как работает numpy.dot .

Примечание: * используется для умножения массива (умножения соответствующих элементов двух массивов), а не умножения матрицы.

Транспонирование матрицы питон

Мы используем numpy.transpose для вычисления транспонирования матрицы.

Как видите, NumPy значительно упростил нашу задачу.

Доступ к элементам матрицы, строкам и столбца

Доступ к элементам матрицы

Также можно получить доступ к элементам матрицы, используя индекс. Начнем с одномерного массива NumPy.

Теперь выясним, как получить доступ к элементам двухмерного массива (который в основном представляет собой матрицу).

Доступ к строкам матрицы

Доступ к столбцам матрицы

Разделение матрицы

Разделение одномерного массива NumPy аналогично разделению списка. Рассмотрим пример:

Теперь посмотрим, как разделить матрицу.

Использование NumPy вместо вложенных списков значительно упрощает работу с матрицами. Мы рекомендуем детально изучить пакет NumPy, если вы планируете использовать Python для анализа данных.

Пожалуйста, оставьте ваши комментарии по текущей теме статьи. Мы очень благодарим вас за ваши комментарии, лайки, отклики, подписки, дизлайки!

Пожалуйста, оставьте ваши отзывы по текущей теме материала. За комментарии, дизлайки, подписки, отклики, лайки низкий вам поклон!

Читайте также: