Array creation routines#
Return a new array of given shape and type, without initializing entries.
empty_like (prototype[, dtype, order, subok, . ])
Return a new array with the same shape and type as a given array.
eye (N[, M, k, dtype, order, like])
Return a 2-D array with ones on the diagonal and zeros elsewhere.
Return the identity array.
ones (shape[, dtype, order, like])
Return a new array of given shape and type, filled with ones.
ones_like (a[, dtype, order, subok, shape])
Return an array of ones with the same shape and type as a given array.
zeros (shape[, dtype, order, like])
Return a new array of given shape and type, filled with zeros.
zeros_like (a[, dtype, order, subok, shape])
Return an array of zeros with the same shape and type as a given array.
full (shape, fill_value[, dtype, order, like])
Return a new array of given shape and type, filled with fill_value.
full_like (a, fill_value[, dtype, order, . ])
Return a full array with the same shape and type as a given array.
From existing data#
array (object[, dtype, copy, order, subok, . ])
Create an array.
asarray (a[, dtype, order, like])
Convert the input to an array.
Convert the input to an ndarray, but pass ndarray subclasses through.
Return a contiguous array (ndim >= 1) in memory (C order).
Interpret the input as a matrix.
Return an array copy of the given object.
frombuffer (buffer[, dtype, count, offset, like])
Interpret a buffer as a 1-dimensional array.
Create a NumPy array from an object implementing the __dlpack__ protocol.
fromfile (file[, dtype, count, sep, offset, like])
Construct an array from data in a text or binary file.
fromfunction (function, shape, *[, dtype, like])
Construct an array by executing a function over each coordinate.
fromiter (iter, dtype[, count, like])
Create a new 1-dimensional array from an iterable object.
fromstring (string[, dtype, count, like])
A new 1-D array initialized from text data in a string.
loadtxt (fname[, dtype, comments, delimiter, . ])
Load data from a text file.
Creating record arrays ( numpy.rec )#
numpy.rec is the preferred alias for numpy.core.records .
Construct a record array from a wide-variety of objects.
Create a record array from a (flat) list of arrays
Create a recarray from a list of records in text form.
Create a record array from binary data
Create an array from binary file data
Creating character arrays ( numpy.char )#
numpy.char is the preferred alias for numpy.core.defchararray .
Convert the input to a chararray , copying the data only if necessary.
Numerical ranges#
arange ([start,] stop[, step,][, dtype, like])
Return evenly spaced values within a given interval.
linspace (start, stop[, num, endpoint, . ])
Return evenly spaced numbers over a specified interval.
logspace (start, stop[, num, endpoint, base, . ])
Return numbers spaced evenly on a log scale.
geomspace (start, stop[, num, endpoint, . ])
Return numbers spaced evenly on a log scale (a geometric progression).
meshgrid (*xi[, copy, sparse, indexing])
Return coordinate matrices from coordinate vectors.
nd_grid instance which returns a dense multi-dimensional "meshgrid".
nd_grid instance which returns an open multi-dimensional "meshgrid".
Предисловие переводчика
Продолжаем перевод статьи о numpy в python. Для тех кто не читал первую часть, сюда: Часть 1. А всем остальным — приятного чтения.
Другие пути создания массивов
Функция arange аналогична функции range, но возвращает массив:
Функции zeros и ones создают новые массивы с установленной размерностью, заполненные этими значениями. Это, наверное, самые простые в использовании функции для создания массивов:
Функции zeros_like и ones_like могут преобразовать уже созданный массив, заполнив его нулями и единицами соответственно:
Также есть некоторое количество функций для создания специальных матриц. Для создания квадратной матрицы с главной диагональю, которая заполненная единицами, воспользуемся методом identity:
Функция eye возвращает матрицу с единичками на к-атой диагонали:
Математические операции над массивами
Когда для массивов мы используем стандартные математические операции, должен соблюдаться принцип: элемент—элемент. Это означает, что массивы должны быть одинакового размера во время сложения, вычитания и тому подобных операций:
Для двухмерных массивов, умножение остается поэлементным и не соответствует умножению матриц. Для этого существуют специальные функции, которые мы изучим позже.
При несоответствии в размере выбрасываются ошибки:
Однако, если размерность массивов не совпадает, они будут преобразованы для выполнения математических операций. Это зачастую означает, что меньший массив будет использован несколько раз для завершения операций. Рассмотрим такой пример:
Тут, одномерный массив b был преобразован в двухмерный, который соответствует размеру массива a. По существу, b был повторен несколько раз, для каждой «строки» a. Иначе его можно представить так:
Python автоматически преобразовывает массивы в этом случае. Иногда, однако, когда преобразование играет роль, мы можем использовать константу newaxis, чтобы изменить преобразование:
Вдобавок к стандартным операторам, в numpy включена библиотека стандартных математических функций, которые могут быть применены поэлементно к массивам. Собственно функции: abs, sign, sqrt, log, log10, exp, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh, и arctanh.
Функции floor, ceil и rint возвращают нижние, верхние или ближайшие (округлённое) значение:
Также в numpy включены две важные математические константы:
Перебор элементов массива
Проводить итерацию массивов можно аналогично спискам:
Для многомерных массивов итерация будет проводиться по первой оси, так, что каждый проход цикла будет возвращать «строку» массива:
Множественное присваивание также доступно при итерации:
Базовые операции над массивами
Для получения каких-либо свойств массивов существует много функций. Элементы могут быть суммированы или перемножены:
В этом примере были использованы функции массива. Также можно использовать собственные функции numpy:
Для большинства случаев могут использоваться оба варианта.
Некие функции дают возможность оперировать статистическими данными. Это функции mean (среднее арифметическое), вариация и девиация:
Можно найти минимум и максимум в массиве:
Функции argmin и argmax возвращают индекс минимального или максимального элемента:
Для многомерных массивов каждая из функций может принять дополнительный аргумент axis и в зависимости от его значения выполнять функции по определенной оси, помещая результаты исполнения в массив:
Как и списки, массивы можно отсортировать:
Значения в массиве могут быть «сокращены», чтобы принадлежать заданному диапазону. Это тоже самое что применять min(max(x, minval), maxval) к каждому элементу x:
Уникальные элементы могут быть извлечены вот так:
Для двухмерных массивов диагональ можно получить так:
Вот и вторая статья подошла к концу. Спасибо за уделенное внимание и удачи в ваших начинаниях! До скорой встречи.
Математические операции над массивами и матрицами
![]()
В процессе обработки и организации данных в определенные моменты возникает необходимость в выполнении математических операций над массивами и матрицами.
Заглянем в notebook
Чтобы ознакомиться с рассматриваемыми далее понятиями о математических операциях над массивами и матрицами в NumPy, загляните на страницу с Jupyter Notebook. Обратите внимание: для облегчения понимания важные функции, результаты выполнения и термины выделены жирным шрифтом.
Первым делом разберемся в различиях между массивами и матрицами в NumPy, где эти понятия рассматриваются немного по-разному.
Массив NumPy
Массивы NumPy — это многомерные объекты с размерностью N.
Матрицы NumPy
Матрицы NumPy — это двумерные объекты. По сути, это те же массивы. Но есть массивы с размерностью 3, 4, 5 и т. д., а матрицы представляют собой массивы с размерностью 2.
Математически понятия остались неизменными — в практических и организационных целях разработчики NumPy лишь разделили методы и атрибуты, характерные для объектов-массивов, от тех, что характерны для объектов-матриц. Отметим также, что в операциях линейной алгебры над массивами и матрицами имеются некоторые различия, которые мы позже разберем.
Многие функции в NumPy в качестве получаемого в результате объекта возвращают массивы, а не матрицы. И не забывайте проверять тип объекта. Итак, начнем.
Загрузка пакетов
Создание матрицы 1
Создадим массив с помощью матричной функции, в которой передается список значений, заключенных в кавычки “ “ , причем эти значения разделены символом ; . Эта точка с запятой указывает на то, что до ; одна строка, а после ; — другая. Получили массив из 2 строк и 3 столбцов:
Проверка типа
Имеем объект-матрицу NumPy (матрицу NumPy), созданную с помощью функции matrix :
Создание матрицы 2
Другой метод создания матриц — список списков. Внутри этого списка еще два списка значений.
Создание матрицы 3
С помощью матричной функции создается также матрица со множеством строк и столбцов. При том, что NumPy выделяет создание такой матрицы в отдельную операцию, многомерный объект представляется все так же в виде массива:
Проверка типа
Получение среза матрицы
Кроме того, получают срез матрицы (не забывая, что индексация в Python начинается с 0):
Математические операции
Переходим к выполнению математических операций над массивами и матрицами.
Создание массива
Посмотрите: тип вывода этого объекта — ndarray . То есть его размерность — любое число.
Умножение массивов
Один массив умножается на другой:
Проверка типа
Преобразование массива в матрицу
Для преобразования массива в матрицу используется функция mat , а затем проверяется тип вывода:
Обратите внимание: объекты-массивы и объекты-матрицы практически одинаковы. Математически это одно и то же, но у нас для каждого из них есть методы и атрибуты.
Проверка типа
Умножение матриц
Матрицы тоже перемножаются друг с другом:
Почему результаты перемножения массивов и матриц отличаются?
При перемножении массивов происходит непосредственное умножение, т. е. элемент первого массива умножается на соответствующий элемент второго.
Скалярное произведение
При перемножении матриц происходит умножение каждого элемента строки первой матрицы на каждый элемент столбца второй матрицы с суммированием получаемого результата, затем следующий элемент строки первого массива умножается на следующий элемент столбца второго массива и т. д. То есть получаем операцию умножения строки * столбцы:
Этот метод, называющийся скалярным произведением, широко применяется в искусственных нейронных сетях, машинном обучении и искусственном интеллекте, причем практически везде это умножение матриц.
Тем не менее в NumPy выполняется и скалярное произведение массивов. Происходит оно так же, как обычное их умножение:
Скалярное произведение массивов
Мы получили тот же результат, что и при перемножении матриц:
Преобразование массива в матрицу
Массив в матрицу преобразовывается так:
Здесь мы воспользовались возможностью преобразования и перемножения матриц — скалярным произведением.
Преобразование матрицы в массив
Преобразуем матрицы в массивы и выполним операции над новым объектом.
Обратите внимание: результат операции приводит к умножению массивов на их соответствующие элементы.
Редко где в Интернете найдешь столь простое объяснение. Ведь для понимания этих различий требуются кое-какие математические знания.
Numpy. Матричные вычисления¶
Numeric Python (NumPy)- это несколько модулей для вычислений с многомерными массивами, необходимых для многих численных приложений. Массив — это набор однородных элементов, доступных по индексам. Массивы модуля Numeric могут быть многомерными, то есть иметь более одной размерности. Количество размерностей и длина массива по каждой оси называются формой массива (shape). Размещение массива в памяти проводится в соответствии с опциями и может быть выполнено как в языке С (по последнему индексу), как в языке Fortran (по первому индексу) или беспорядочно.
Особо подчеркнем отличие массива от набора данных (списка или кортежа). Величины, входящие в массив имеют одинаковый тип и их количество жестко задается при инициализации. Элементы массива не являются объектами, это переменные в обычном понимании этого слова. Массивы позволяют экономить память и увеличивать скорость работы с большим количеством однотипных данных.
Как представлены массивы в Python? В Python массивы – это объекты, содержащие буфер данных и информацию о форме, размерности, типе данных и т.д. Как и у любого объекта, у массива можно менять атрибуты напрямую: array.shape=(2,3) или через вызов функции np.reshape(array,(2,3)). Такая же ситуация и с методами (функциями для массивов), заданными в этом классе, многие из них могут вызываться как методы array.resize(2,4) или как самостоятельные функции NumPy : np.resize(array,(2,4)). Некоторые функции являются только методами: array.flat, array.flatten, array.T. Для правильного использования таких функций, необходимо обращаться к их описанию.
Типы данных¶
В качестве элементов массива можно использовать множество типов, которые перечислены в таблице.
Типы Int, UnsignedInteger, Float и Complex соответствуют наибольшим принятым на данной платформе значениям.
| Тип | Описание | Тип | Описание |
|---|---|---|---|
| Логический | Числа с плавающей точкой | ||
| bool_ | Python bool | half | |
| bool8 | 8 бит | single | C float |
| Целый | double | C double | |
| byte | C char | float_ | Python float |
| short | C short | longfloat | C long float |
| intc | C int | float16 | 16 бит |
| int_ | Python int | float32 | 32 бит |
| longlong | C long long | float64 | 64 бит |
| intp | такой ,что может описывать указатели | float96 | 96 бит. |
| int8 | 8 бит | float128 | 128 бит . |
| int16 | 16 бит | Комплексные | |
| int32 | 32 бит | csingle | |
| int64 | 64 бит | complex_ | Python complex |
| Целый без знака (натуральное) | clongfloat | ||
| ubyte | C unsigned char | complex64 | два 32- битовых |
| ushort | C unsigned short | complex128 | два 64- битовых |
| uintc | C unsigned int | complex192 | два 96- битовых . |
| uint | Python int | complex256 | два 128-битовых |
| ulonglong | C long long | Строки | |
| uintp | такой, что может описывать указатели | str_ | Python str |
| uint8 | 8 бит | unicode_ | Python unicode |
| uint16 | 16 бит | void | |
| uint32 | 32 бит | Объекты Python | |
| uint64 | 64 бит | object_ | любой объект Python |
Операции для работы с массивами¶
В NumPy реализовано много операций для работы с массивами:
- создание, модификация массива (изменение формы, транспонирование, поэлементные операции),
- выбор элементов,
- операции с массивами (различные типы умножения), сравнение массивов
- решение задач линейной алгебры (системы линейных уравнений, собственые вектора. собственные значения)
- создание наборов случайных данных
- быстрое преобразование Фурье
Создание массивов¶
В NumPy можно выделить три вида массивов:
- произвольные многомерные массивы (array)
- матрицы (matrix) – двухмерные квадратные массивы, для которых дополнительно определены операции возведения в степень и перемножения. Для работы с матрицами можно вместо “numpy” подключать “numpy.matrix”, в котором реализованы те же самые операции, только массивы – результаты операций будут приводится к типу “matrix”.
- сетки (grid) – массивы, в которых записаны значения координат точек сети (обычно ортогональной). Сетки позволяют удобно вычислять значение функций многих переменных.
Создание массивов из имеющихся данных¶
Для создания массивов существует множество функций. Самая распространенная из них array() .