Numpy, часть 3: random

Функции математической статистики

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

Название

Описание

np.median(x)

Вычисление
медианы величин x

np.var(x)

Дисперсия
величин x

np.std(x)

Среднеквадратическое
отклонение величин x

np.corrcoef(x)

Линейный
коэффициент корреляции Пирсона

np.correlate(x)

Вычисление
кросс-корреляции

np.cov(x)

Вычисление
ковариационной матрицы

Рассмотрим
работу этих функций. Предположим, имеются следующие векторы:

x = np.array(1, 4, 3, 7, 10, 8, 14, 21, 20, 23)
y = np.array(4, 1, 6, 9, 13, 11, 16, 19, 15, 22)

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

np.median(x) # 9.0

Для расчета
дисперсии и СКО, функциями:

np.var(x) # дисперсия СВX на основе реализации x
np.std(y) # СКО СВY на основе реализации y

Далее, чтобы
рассчитать коэффициент корреляции Пирсона, объединим массивыx и y построчно:

XY = np.vstack(x, y) # матрица 2x10

и выполним
функцию:

np.corrcoef(XY)

Результатом
будет матрица 2×2:

array(,

      
])

Как ее следует
интерпретировать? В действительности, это автоковариационная матрица вектора СВ:

(В этой формуле
полагается, что СВX и Y центрированы, то есть имеют нулевое
математическое ожидание).

Если нужно
вычислить не нормированное МО, то есть, автоковариационную матрицу, то следует
воспользоваться функцией:

np.cov(XY) # ковариационная матрица размерностью 2x2

Наконец, для
вычисления взаимной корреляции между двумя векторамиx и y, используется
функция:

np.correlate(x, y) # array()

Более детальную
информацию по этим статистическим функциям можно найти в официальной
документации пакета NumPy:

Конечно, мы
рассмотрели далеко не все математические функции NumPy. На следующем
занятии продолжим эту тему и поговорим об умножении векторов и матриц, линейной
алгебре и множествах.

Видео по теме

#1. Пакет numpy — установка и первое знакомство | NumPy уроки

#2. Основные типы данных. Создание массивов функцией array() | NumPy уроки

#3. Функции автозаполнения, создания матриц и числовых диапазонов | NumPy уроки

#4. Свойства и представления массивов, создание их копий | NumPy уроки

#5. Изменение формы массивов, добавление и удаление осей | NumPy уроки

#6. Объединение и разделение массивов | NumPy уроки

#7. Индексация, срезы, итерирование массивов | NumPy уроки

#8. Базовые математические операции над массивами | NumPy уроки

#9. Булевы операции и функции, значения inf и nan | NumPy уроки

#10. Базовые математические функции | NumPy уроки

#11. Произведение матриц и векторов, элементы линейной алгебры | NumPy уроки

#12. Множества (unique) и операции над ними | NumPy уроки

#13. Транслирование массивов | NumPy уроки

Индексация тензоров 2-го ранга

Тензор второго ранга – это матрица или двумерный массив. В Питоне он может быть записан следующим образом:

>>> a = np.array(,
                  ,
                  ])
>>> a
array(,
       ,
       ])

У матрицы имеются две оси: строки и столбцы. В качестве примера, на рисунке обозначены индексы: i – строки, j – столбцы:

Матрица numpy

Для обращения к осям используется запятая.
Чтобы извлечь элемент, указываем через запятую индекс строки, затем индекс столбца:

>>> a
3

Чтобы извлечь строку, достаточно указать индекс в квадратных скобках:

>>> a
array()

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

>>> a
array()

Кроме того, можно получить элементы, стоящие на определенных строках и столбцах. Например, извлечем элементы, лежащие на строке с индексом 1 и на столбцах от 1 до 3:

>>> a
array()

Что такое тензоры и при чем тут Data Science

Числа – основа вычислений компьютера, и более того средство конечного отображения любых данных: от художественного текста до графики и видео. Методы Data Science и Machine Learning тоже трансформируют информацию в числовую форму, чтобы работать с ней. Такими наборами чисел являются тензоры – в Python-библиотеке NumPy структуры данных в виде массивов, т.е. array .Тензоры имеют следующие атрибуты:

  • ранг – количество осей. В двумерном тензоре ранг равен 2, трехмерный – 3 и т.д.
  • форма, определяющая количество элементов на каждой из осей;
  • тип данных – int32, float32 и другие числовые типы.

Прежде чем начать работу с тензорами в библиотеке numpy, ее нужно импортировать. Для обращения к ней будем использовать символы :

import numpy as np

У массивов numpy есть атрибут – ранг и shape – форма. Далее разберем на практических примерах, как с ними работать.

Где используются тензоры: применение в Data Science

Как мы уже отметили выше, тензоры позволяют представить изначально не числовую информацию в числовой форме. Например, изображение в оттенках серого представляется как матрица пикселей, где элемент равный 0 соответствует белому цвету, а 255 – черному, остальные являются переходными между белым и черным.

Матрица пикселей

Совокупность таких изображений составляют образцы (samples). Тогда форма тензора с этими изображениями будет иметь вид: (образцы, высота, ширина)

У цветных изображений 3 канала цвета, поэтому его форма включает еще цвет: (образцы, цвет, высота, ширина).

Тексты можно представить виде матрицы, где предложение – это строка, а элемент в ней – закодированное слово. Видео – это совокупность изображений в каждом кадре, поэтому к форме тензора добавится атрибут в виде кадра.

В следующей статье мы продолжим разговор про тензоры в Data Science и Machine Learning и рассмотрим, как в Python можно управлять ими, извлекая из них нужные компоненты. Еще больше технических подробностей о работе с тензорами и представлением данных для Machine Learning, вы узнаете на практических курсах по Python в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.

Смотреть расписание
Записаться на курс

Источники

Функции интерполяции

В сфере числового анализа интерполяция — это построение новых точек данных на основе известных. Библиотека SciPy включает подпакет scipy.interpolate, состоящий из сплайновых функций и классов, одно- и многомерных интерполяционных классов и так далее.

Одномерная интерполяция

Одномерная интерполяция — это область построения кривой, которая бы полностью соответствовала набору двумерных точек данных. В SciPy есть функция , которая используется для создания одномерной интерполяции.

Пример:

Вывод:

Многомерная интерполяция

Многомерная интерполяция (пространственная интерполяция) — это тип интерполяции функций, который состоит из более чем одной переменной. Следующий пример демонстрирует работу функции .

При интерполяции на двумерную сетку функция использует массивы x, y и z для приближения функции и возвращает функцию, у которой вызываемый метод использует сплайновую интерполяцию для поиска значения новых точек.

Пример:

Вывод:

Создание массивов

В NumPy существует много способов создать массив. Один из наиболее простых — создать массив из обычных списков или кортежей Python, используя функцию numpy.array() (запомните: array — функция, создающая объект типа ndarray):

>>> import numpy as np
>>> a = np.array()
>>> a
array()
>>> type(a)
<class 'numpy.ndarray'>

Функция array() трансформирует вложенные последовательности в многомерные массивы. Тип элементов массива зависит от типа элементов исходной последовательности (но можно и переопределить его в момент создания).

>>> b = np.array(, 4, 5, 6]])
>>> b
array(,
       ])

Можно также переопределить тип в момент создания:

>>> b = np.array(, 4, 5, 6]], dtype=np.complex)
>>> b
array(,
       ])

Функция array() не единственная функция для создания массивов. Обычно элементы массива вначале неизвестны, а массив, в котором они будут храниться, уже нужен. Поэтому имеется несколько функций для того, чтобы создавать массивы с каким-то исходным содержимым (по умолчанию тип создаваемого массива — float64).

Функция zeros() создает массив из нулей, а функция ones() — массив из единиц. Обе функции принимают кортеж с размерами, и аргумент dtype:

>>> np.zeros((3, 5))
array(,
       ,
       ])
>>> np.ones((2, 2, 2))
array(,
        ],

       ,
        ]])

Функция eye() создаёт единичную матрицу (двумерный массив)

>>> np.eye(5)
array(,
       ,
       ,
       ,
       ])

Функция empty() создает массив без его заполнения. Исходное содержимое случайно и зависит от состояния памяти на момент создания массива (то есть от того мусора, что в ней хранится):

>>> np.empty((3, 3))
array(,
       ,
       ])
>>> np.empty((3, 3))
array(,
       ,
       ])

Для создания последовательностей чисел, в NumPy имеется функция arange(), аналогичная встроенной в Python range(), только вместо списков она возвращает массивы, и принимает не только целые значения:

>>> np.arange(10, 30, 5)
array()
>>> np.arange(, 1, 0.1)
array()

Вообще, при использовании arange() с аргументами типа float, сложно быть уверенным в том, сколько элементов будет получено (из-за ограничения точности чисел с плавающей запятой). Поэтому, в таких случаях обычно лучше использовать функцию linspace(), которая вместо шага в качестве одного из аргументов принимает число, равное количеству нужных элементов:

>>> np.linspace(, 2, 9)  # 9 чисел от 0 до 2 включительно
array()

fromfunction(): применяет функцию ко всем комбинациям индексов

Базовые математические функции

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

Название

Описание

np.abs(x)

Вычисление
модуля от аргумента(ов)x; xможет быть
числом, списком или массивом.

np.amax(x)

Нахождение
максимального значения от аргумента(ов)x

np.amin(x)

Нахождение
минимального значения от аргумента(ов)x

np.argmax(x)

Нахождение
индекса максимального значения дляx.

np.argmin(x)

Нахождение
индекса минимального значения дляx.

np.around(x)

Округление
до ближайшего целого.

np.mean(x)

Вычисление
среднего значения.

np.log(x)

Вычисление
натурального логарифма.

np.log2(x)

Вычисление
логарифма по основанию 2.

np.log10(x)

Вычисление
логарифма по основанию 10.

Предположим,
имеется массив:

a = np.array(-1, 1, 5, -44, 32, 2)

тогда для
вычисления модулей значений его элементов можно записать команду:

np.abs(a) # array()

На выходе
получаем новый массив с абсолютными величинами. То же самое будет, если на вход
подать обычный список значений:

np.abs(-1, 1, 5, -44, 32, )# array()

или просто
число:

np.abs(-10.5) # 10.5

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

Остальные
функции работают по аналогии, например:

np.amax(a) # 32
np.log(a) # array()
np.around(0.7) # 1.0

Функции amin, amax, mean, argmax, argmin, при работе с
многомерными матрицами, могут делать вычисления по строго определенной оси.
Например:

a.resize(2, 3)
np.amax(a, axis=)  # array()
np.argmax(a, axis=1) # array(, dtype=int32)

И так далее.

Минутка восхищения или что такого в массивах NumPy

Но, все-таки,
что такого в массивах NumPy, что они повсеместно используются в
разных библиотеках? Давайте я приведу несколько примеров, и вы сами все
увидите.

Предположим, мы
определили одномерный массив с числами от 1 до 9:

a = np.array(1,2,3,4,5,6,7,8,9)

Мы уже знаем как
взять один отдельный элемент, но что будет, если прописать индексы для всех 9
элементов:

a 1,1,1,1,1,1,1,1,1 

На выходе увидим
одномерный массив из двоек:

array()

Или, так:

a 1,1,1,1,1 

тогда получим
аналогичный массив, но размерностью 5 элементов:

array()

Как видите,
индексирование здесь более гибкое, чем у обычных списков Python. Или, вот еще один характерный пример:

a True, True, False, False, False, False, True, True, True 

Результат будет
следующим:

array()

То есть,
остаются элементы со значениями True и отбрасываются со значениями False. Обо всем этом
мы еще будем подробно говорить.

Еще один пример.
Предположим, нам понадобилось представить одномерный массив a в виде матрицы
3х3. Нет ничего проще, меняем его размерность:

b = a.reshape(3, 3)

и получаем
заветный результат:

array(,

      
,

       ])

Далее, можем
обращаться к элементам матрицы b так:

b12

или так:

b1, 2

В обоих случаях
будет взят один и тот же элемент со значением 6.

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

Видео по теме

#1. Пакет numpy — установка и первое знакомство | NumPy уроки

#2. Основные типы данных. Создание массивов функцией array() | NumPy уроки

#3. Функции автозаполнения, создания матриц и числовых диапазонов | NumPy уроки

#4. Свойства и представления массивов, создание их копий | NumPy уроки

#5. Изменение формы массивов, добавление и удаление осей | NumPy уроки

#6. Объединение и разделение массивов | NumPy уроки

#7. Индексация, срезы, итерирование массивов | NumPy уроки

#8. Базовые математические операции над массивами | NumPy уроки

#9. Булевы операции и функции, значения inf и nan | NumPy уроки

#10. Базовые математические функции | NumPy уроки

#11. Произведение матриц и векторов, элементы линейной алгебры | NumPy уроки

#12. Множества (unique) и операции над ними | NumPy уроки

#13. Транслирование массивов | NumPy уроки

Changes

Changed behavior of and related functions

The changes also assure that different compiler versions have the same
behavior for nan or inf usages in these operations. This was previously
compiler dependent, we now force the invalid and divide by zero flags,
making the results the same across compilers. For example, gcc-5, gcc-8,
or gcc-9 now result in the same behavior. The changes are tabulated
below:

Operator Old Warning New Warning Old Result New Result Works on MacOS

np.divmod(1.0, 0.0) Invalid Invalid and Dividebyzero nan, nan inf, nan Yes
np.fmod(1.0, 0.0) Invalid Invalid nan nan No? Yes
np.floor_divide(1.0, 0.0) Invalid Dividebyzero nan inf Yes
np.remainder(1.0, 0.0) Invalid Invalid nan nan Yes

: Summary of New Behavior

(gh-16161)

on integers now uses floor

When using a dtype in {.title-ref}, previously
float values would be rounded towards zero. Now
{.title-ref} is used instead, which rounds toward .
This changes the results for negative values. For example, the following
would previously give:

and now results in:

The former result can still be obtained with:

(gh-16841)

Other Useful Items

  • Looking for 3rd party Python modules? The
    Package Index has many of them.
  • You can view the standard documentation
    online, or you can download it
    in HTML, PostScript, PDF and other formats. See the main
    Documentation page.
  • Information on tools for unpacking archive files
    provided on python.org is available.
  • Tip: even if you download a ready-made binary for your
    platform, it makes sense to also download the source.
    This lets you browse the standard library (the subdirectory Lib)
    and the standard collections of demos (Demo) and tools
    (Tools) that come with it. There’s a lot you can learn from the
    source!
  • There is also a collection of Emacs packages
    that the Emacsing Pythoneer might find useful. This includes major
    modes for editing Python, C, C++, Java, etc., Python debugger
    interfaces and more. Most packages are compatible with Emacs and
    XEmacs.

Ссылки

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

Визуализация

Gnuplot.py — библиотека для построения графиков с помощью программы Gnuplot. Для работы требует библиотеку Numeric Python. Поддерживает Python, начиная с версии 1.5. Последняя версия вышла, к сожалению, в 2003 году.

PyNGL. Результаты работы это библиотеки можно увидеть на этой странице.

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

Paida. Реализация на Python библиотеки AIDA, которая изначально была предназначена для программирования на C++ и Java. Paida умеет строить как двумерные, так и трехмерные графики.

Также много библиотек перечислены на странице http://pypi.python.org/pypi?:action=browse&c=385 официального сайта языка Python.

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Костромин Андрей 15.01.2008 — 16:56

Примеры использования. Работа с матрицами

Python 2.4.2 (#1, Apr 13 2007, 15:45:45)
 on linux2
>>> import Numeric
>>> a = Numeric.array (, , ], "f")
>>> print a

 
 ]
>>> b = Numeric.ones (, "f")
>>> print b

 
 ]
>>> b *= 2
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: return array has incorrect type
>>> a = b * 2
>>> print a

 
 ]
>>> c = a + b
>>> print c

 
 ]

Jenyay 15.01.2008 — 18:28

Примеры использования. Работа с матрицами

Костромин Андрей

Судя по import Numeric это как раз предыдущая версия NumPy — Numeric Python. Возможно, там не реализованы какие-то операторы.

PBT 19.02.2009 — 20:55

Matplotlib и русский язык

Чтобы в графиках на Matplotlib выводить надписи кириллицей, нужно в файле настроек библиотеки принудительно выставить использование шрифта TTF и явно указать гарнитуру, поддерживающую русский (например Arial)

Jenyay 19.02.2009 — 21:02

PBT, спасибо, надо будет попробовать.

Костромин Андрей 29.09.2009 — 10:19

Математический Python и другое свободное математическое ПО

Какое место занимают питоновские библиотеки среди других программ, как Maxima, Scilab, Octave, GNU R?

Jenyay 29.09.2009 — 10:25

Костромин Андрей, ответить не готов, про перечисленные программы слышал, но не пользовался ими.

artemij 29.10.2016 — 20:13

не тот python

Я программирую на онлайн версии python.
Называется python trinket.А здесь её нету.
Я НЕ ЗНАЮ ЧТО ДЕЛАТЬ!

reddaemon 30.10.2016 — 17:21

artemij Очевидно, Вам стоит поискать другой онлайн сервис, где будет модуль NumPy или установить Python и NumPy локально.

dponyatov@gmail.com 07.01.2018 — 10:14

Стоит добавить еще раздел про pyLLVM

По применению Python стоит еще добавить раздел про биндинг к библиотеке LLVM, особенно ее JIT-функционалу.

Для очень многих расчетных программ критична оптимизация по скорости исполнения, и тут есть еще один вариант использования Python — метапрограммирование.

Т.е. на Python описывается расчетная модель, потом выполняется ее комиляция через вызовы библиотеки http://www.llvmpy.org в результате получаем платформенный оптимизированный машинный код, который уже датакранчит.

Есть ли в Python средства работы с исходным кодом? Создание/модификация AST деревьев, алгоритмы и библиотеки MDA (Model Driven Programming)? Делаю свой фреймворк, но может есть уже что-то готовое?

dponyatovgmailcom 07.01.2018 — 10:17

Есть еще такая штука как Numba

Продолжая про LLVM: есть такая штука как Numba: http://numba.pydata.org

Она как раз использует такой подход: компиляцию Python-функций в нативный машинный код.

7.3. Статистика

Над данными в массивах можно производить определенные вычисления, однако, не менее часто требуется эти данные как-то анализировать. Зачастую, в этом случае мы обращаемся к статистике, некоторые функции которой тоже имеются в NumPy. Данные функции могут применять как ко всем элементам массива, так и к элементам, расположенным вдоль определенной оси.

Элементарные статистические функции:

Средние значения элементов массива и их отклонения:

Корреляционные коэфициенты и ковариационные матрицы величин:

Так же NumPy предоставляет функции для вычисления гистограмм наборов данных различной размерности и некоторые другие статистичские функции.

Фундаментальный элемент NumPy – массив (array)

Отлично,
сложнейший этап установки и импорта пакета позади. Пришло время сделать первые
шаги и вначале познакомиться с его фундаментальным элементом – однородным
многомерным массивом. В NumPy элементы массива имеют единый тип
данных. Их индексы описываются кортежем целых неотрицательных чисел.
Размерность кортежа – это ранг массива (то есть, размерность массива), а каждое
число в кортеже представляет свою отдельную ось:

Как создать
массив в NumPy? Существует много
способов, но базовый реализуется через функцию:

numpy.array(object,
dtype=None, …)

Здесь в качестве
первого параметра object может выступать список или кортеж, а также функция или объект, возвращающий список или
кортеж. Второй параметр dtype – это тип элементов массива. Если
указано значение None, то тип будет определяться автоматически на основе
переданных данных. Подробнее об этой функции можно, как всегда, почитать на
странице официальной документации:

Итак, в самом
простом варианте можно создать одномерный массив так:

a = np.array(1, 2, 3, 4)

В результате
получим объект типа array с элементами 1, 2, 3, 4:

array()

Какой будет тип
у этих элементов? Мы можем его посмотреть с помощью атрибута dtype, выполнив в
консоли строчку:

a.dtype

Увидим:

dtype(‘int32’)

То есть,
автоматически был применен целочисленный тип размерностью 32 бит. Ну, хорошо, а
что если попробовать создать массив с разными типами его элементов, например,
так:

a = np.array(1, 2, "3", True)

В результате
увидим, следующее содержимое:

array(, dtype='<U11′)

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

Отлично, это мы
сделали. Как теперь можно обращаться к отдельным элементам массива? Для этого
используется общий синтаксис:

<имя массива>

Например, для
нашего одномерного случая, мы можем взять первый элемент из массива a, следующим
образом:

a

Увидим значение ‘1’.
Обратите внимание, первый элемент имеет индекс 0, а не 1. Единица – это уже
второй элемент:

a1 # возвращает 2-й элемент со значением ‘2’

Для изменения
значения элемента, достаточно присвоить ему новое значение, например:

a1 = '123'

в результате
получим массив:

array(, dtype='<U11′)

А что будет,
если мы попробуем присвоить значение другого типа данных, например, число:

a1 = 234

Ошибки не будет,
а значение автоматически будет преобразовано в строку:

array(, dtype='<U11′)

Разработчики
пакета NumPy постарались
сделать его максимально дружественным, чтобы инженер сосредотачивался именно на
решении задачи, а не на нюансах программирования. Поэтому везде, там где это
допустимо, пакет NumPy берет на себя разрешение подобных
нюансов. И, как показала практика, это очень удобно и заметно облегчает жизнь
нам, простым смертным.

Функции обработки сигналов

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

Фильтрация:

Фильтруя сигнал, можно удалить нежелаемые составляющие. Для выполнения упорядоченной фильтрации используется функция . Она выполняет операцию на массиве. Синтаксис следующий:

— N-мерный массив с входящими данными

— массив масок с тем же количеством размерностей, что и у массива

— неотрицательное число, которое выбирает элементы из отсортированного списка (0, 1…)

Пример:

Вывод:

Сигналы

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

Пример:

Вывод:

Тензоры 2-го ранга и выше в numpy

Тензор второго ранга или матрица представляет собой это массив векторов. В numpy он создается так:

>>> a = np.array(,
                  ,
                  ])
>>> a
array(,
       ,
       ])

Ранг у него 2-й:

>>> a.ndim
2

Форма у матрицы соответствует количеству строк и столбцов (3 строки и 4 столбца):

>>> a.shape
(3, 4)

Тензор третьего ранга – это массив матриц без отдельного наименования. В numpy он создается следующим образом:

>>> a = np.array(,
                  ,
                  ],
                 ,
                  ,
                  ],
                 ,
                  ,
                  ]])

>>> a
array(,
        ,
        ],
       ,
        ,
        ],
       ,
        ,
        ]])

Ранг у него 3-й:

>>> a.ndim
3

Форма у тензора соответствует количеству матриц (3), числу строк (3) и столбцов (4) в каждой из них:

>>> a.shape
(3, 3, 4)

Тензор четвертого ранга – это массив тензоров третьего ранга, тензор пятого ранга – это массив тензоров четвертого ранга и т.д. Например, изображения можно закодировать как тензор 4-го ранга, а видео – как тензор 5-го ранга.

max/ min:

Next, we have some more operations in numpy such as to find the minimum, maximum as well the sum of the numpy array. Let’s go ahead in python numpy tutorial and execute it practically.

import numpy as npa= np.array()print(a.min())print(a.max())print(a.sum())Output - 1 3 6

You must be finding these pretty basic, but with the help of this knowledge, you can perform a lot bigger tasks as well. Now, let’s understand the concept of axis in python numpy.

As you can see in the figure, we have a numpy array 2*3. Here the rows are called as axis 1 and the columns are called as axis 0. Now you must be wondering what is the use of these axis?

Suppose you want to calculate the sum of all the columns, then you can make use of axis. Let me show you practically, how you can implement axis in your PyCharm:

a= np.array()print(a.sum(axis=0))Output - 

Therefore, the sum of all the columns are added where 1+3=4, 2+4=6 and 3+5=8. Similarly, if you replace the axis by 1, then it will print where all the rows get added.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий