Для чего нужен numpy
NumPy, часть 1: начало работы
NumPy — это библиотека языка Python, добавляющая поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых (и очень быстрых) математических функций для операций с этими массивами.
Установка NumPy
На Windows на том же сайте есть exe установщики. Или, если возникают проблемы, рекомендую ещё хороший сборник библиотек http://www.lfd.uci.edu/
Начинаем работу
Основным объектом NumPy является однородный многомерный массив (в numpy называется numpy.ndarray). Это многомерный массив элементов (обычно чисел), одного типа.
Наиболее важные атрибуты объектов ndarray:
Создание массивов
Функция array() трансформирует вложенные последовательности в многомерные массивы. Тип элементов массива зависит от типа элементов исходной последовательности (но можно и переопределить его в момент создания).
Можно также переопределить тип в момент создания:
Функция array() не единственная функция для создания массивов. Обычно элементы массива вначале неизвестны, а массив, в котором они будут храниться, уже нужен. Поэтому имеется несколько функций для того, чтобы создавать массивы с каким-то исходным содержимым (по умолчанию тип создаваемого массива — float64).
Функция zeros() создает массив из нулей, а функция ones() — массив из единиц. Обе функции принимают кортеж с размерами, и аргумент dtype:
Функция eye() создаёт единичную матрицу (двумерный массив)
Функция empty() создает массив без его заполнения. Исходное содержимое случайно и зависит от состояния памяти на момент создания массива (то есть от того мусора, что в ней хранится):
Для создания последовательностей чисел, в NumPy имеется функция arange(), аналогичная встроенной в Python range(), только вместо списков она возвращает массивы, и принимает не только целые значения:
Вообще, при использовании arange() с аргументами типа float, сложно быть уверенным в том, сколько элементов будет получено (из-за ограничения точности чисел с плавающей запятой). Поэтому, в таких случаях обычно лучше использовать функцию linspace(), которая вместо шага в качестве одного из аргументов принимает число, равное количеству нужных элементов:
fromfunction(): применяет функцию ко всем комбинациям индексов
Печать массивов
Если массив слишком большой, чтобы его печатать, NumPy автоматически скрывает центральную часть массива и выводит только его уголки.
Если вам действительно нужно увидеть весь массив, используйте функцию numpy.set_printoptions:
И вообще, с помощью этой функции можно настроить печать массивов «под себя». Функция numpy.set_printoptions принимает несколько аргументов:
precision : количество отображаемых цифр после запятой (по умолчанию 8).
threshold : количество элементов в массиве, вызывающее обрезание элементов (по умолчанию 1000).
edgeitems : количество элементов в начале и в конце каждой размерности массива (по умолчанию 3).
linewidth : количество символов в строке, после которых осуществляется перенос (по умолчанию 75).
suppress : если True, не печатает маленькие значения в scientific notation (по умолчанию False).
nanstr : строковое представление NaN (по умолчанию ‘nan’).
infstr : строковое представление inf (по умолчанию ‘inf’).
formatter : позволяет более тонко управлять печатью массивов. Здесь я его рассматривать не буду, можете почитать здесь (на английском).
И вообще, пользуйтесь официальной документацией по numpy, а в этом пособии я постараюсь описать всё необходимое. В следующей части мы рассмотрим базовые операции над массивами.
Изучение NumPy с визуальными примерами для начинающих
Пакет NumPy является незаменимым помощником Python. Он тянет на себе анализ данных, машинное обучение и научные вычисления, а также существенно облегчает обработку векторов и матриц. Некоторые ведущие пакеты Python используют NumPy как основной элемент своей инфраструктуры. К их числу относятся scikit-learn, SciPy, pandas и tensorflow. Помимо возможности разобрать по косточкам числовые данные, умение работать с NumPy дает значительное преимущество при отладке более сложных сценариев библиотек.
Содержание
В данной статье будут рассмотрены основные способы использования NumPy на примерах, а также типы представления данных (таблицы, картинки, текст и так далее) перед их последующей подачей модели машинного обучения.
Создание массивов NumPy
Нередки случаи, когда необходимо, чтобы NumPy инициализировал значения массива.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
После создания массивов можно манипулировать ими довольно любопытными способами.
Арифметические операции над массивами NumPy
Создадим два массива NumPy и продемонстрируем выгоду их использования.
Массивы будут называться data и ones :
При сложении массивов складываются значения каждого ряда. Это сделать очень просто, достаточно написать data + ones :
Новичкам может прийтись по душе тот факт, что использование абстракций подобного рода не требует написания циклов for с вычислениями. Это отличная абстракция, которая позволяет оценить поставленную задачу на более высоком уровне.
Помимо сложения, здесь также можно выполнить следующие простые арифметические операции:
Как можно увидеть в примере выше, NumPy сам понял, что умножить на указанное число нужно каждый элемент массива. Данный концепт называется трансляцией, или broadcating. Трансляция бывает весьма полезна.
Индексация массива NumPy
Массив NumPy можно разделить на части и присвоить им индексы. Принцип работы похож на то, как это происходит со списками Python.
Агрегирование в NumPy
Дополнительным преимуществом NumPy является наличие в нем функций агрегирования:
Это лишь небольшая часть довольно обширного списка функций агрегирования в NumPy.
Использование нескольких размерностей NumPy
Создание матриц NumPy на примерах
Созданные в следующей форме списки из списков Python можно передать NumPy. Он создаст матрицу, которая будет представлять данные списки:
Достаточно только добавить им кортеж, в котором будут указаны размерности матрицы, которую мы создаем.
Арифметические операции над матрицами NumPy
Арифметические операции над матрицами разных размеров возможны в том случае, если размерность одной из матриц равно одному. Это значит, что в матрице только один столбец или один ряд. В таком случае для выполнения операции NumPy будет использовать правила трансляции:
dot() Скалярное произведение NumPy
На изображении выше под каждой фигурой указана ее размерность. Это сделано с целью отметить, что размерности обеих матриц должны совпадать с той стороны, где они соприкасаются. Визуально представить данную операцию можно следующим образом:
Индексация матрицы NumPy
Операции индексации и деления незаменимы, когда дело доходит до манипуляции с матрицами:
Агрегирование матриц NumPy
Агрегирование матриц происходит точно так же, как агрегирование векторов:
Транспонирование и изменение формы матриц в numpy
Еще больше размерностей NumPy
В большинстве случаев для указания новой размерности требуется просто добавить запятую к параметрам функции NumPy:
На заметку: Стоит иметь в виду, что при выводе 3-мерного массива NumPy результат, представленный в виде текста, выглядит иначе, нежели показано в примере выше. Порядок вывода n-мерного массива NumPy следующий — последняя ось зацикливается быстрее всего, а первая медленнее всего. Это значит, что вывод np.ones((4,3,2)) будет иметь вид:
Примеры работы с NumPy
Подытожим все вышесказанное. Вот несколько примеров полезных инструментов NumPy, которые могут значительно облегчить процесс написания кода.
Математические формулы NumPy
Необходимость внедрения математических формул, которые будут работать с матрицами и векторами, является главной причиной использования NumPy. Именно поэтому NumPy пользуется большой популярностью среди представителей науки. В качестве примера рассмотрим формулу среднеквадратичной ошибки, которая является центральной для контролируемых моделей машинного обучения, что решают проблемы регрессии:
Реализовать данную формулу в NumPy довольно легко:
Главное достоинство NumPy в том, что его не заботит, если predictions и labels содержат одно или тысячи значение (до тех пор, пока они оба одного размера). Рассмотрим пример, последовательно изучив четыре операции в следующей строке кода:
У обоих векторов predictions и labels по три значения. Это значит, что в данном случае n равно трем. После выполнения указанного выше вычитания мы получим значения, которые будут выглядеть следующим образом:
Затем мы можем возвести значения вектора в квадрат:
Теперь мы вычисляем эти значения:
Таким образом мы получаем значение ошибки некого прогноза и score за качество модели.
Представление данных NumPy
Задумайтесь о всех тех типах данных, которыми вам понадобится оперировать, создавая различные модели работы (электронные таблицы, изображения, аудио и так далее). Очень многие типы могут быть представлены как n-мерные массивы:
Таблицы NumPy — примеры использования таблиц
Аудио и временные ряды в NumPy
Фрагмент аудио файла выглядит следующим образом:
То же самое касается данных временных рядов, например, изменения стоимости акций со временем.
Обработка изображений в NumPy
Изображение является матрицей пикселей по размеру (высота х ширина).
Вот как выглядит фрагмент изображения:
Если изображение цветное, каждый пиксель представлен тремя числами. Здесь за основу берется цветовая модель RGB — красный (R), зеленый (G) и синий (B).
В данном случае нам понадобится третья размерность, так как каждая клетка вмещает только одно число. Таким образом, цветная картинка будет представлена массивом ndarray с размерностями: (высота х ширина х 3).
Обработка текста в NumPy на примерах
Когда дело доходит до текста, подход несколько меняется. Цифровое представление текста предполагает создание некого python словаря, то есть инвентаря всех уникальных слов, которые бы распознавались моделью, а также векторно (embedding step). Попробуем представить в цифровой форме цитату из стихотворения арабского поэта Антара ибн Шаддада, переведенную на английский язык:
“Have the bards who preceded me left any theme unsung?”
Перед переводом данного предложения в нужную цифровую форму модель должна будет проанализировать огромное количество текста. Здесь можно обработать небольшой набор данный, после чего использовать его для создания словаря из 71 290 слов.
Предложение может быть разбито на массив токенов, что будут словами или частями слов в зависимости от установленных общих правил:
Затем в данной таблице словаря вместо каждого слова мы ставим его id :
Однако данные id все еще не обладают достаточным количеством информации о модели как таковой. Поэтому перед передачей последовательности слов в модель токены/слова должны быть заменены их векторными представлениями. В данном случае используется 50-мерное векторное представление Word2vec.
Теперь мы получили числовой том, с которым модель может работать и делать полезные вещи. Некоторые строки остались пустыми, однако они могут быть заполнены другими примерами, на которых модель может тренироваться или делать прогнозы.
(На заметку: Поэма, строчку из которой мы использовали в примере, увековечила своего автора в веках. Будучи незаконнорожденным сыном главы племени от рабыни, Антара ибн Шаддан мастерски владел языком поэзии. Вокруг исторической фигуры поэта сложились мифы и легенды, а его стихи стали частью классической арабской литературы).
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
Руководство для начинающих по NumPy
Дата публикации Nov 17, 2019
Мир работает на данных, и каждый должен знать, как с ними работать.
Трудно представить современный, технически грамотный бизнес, который не использует анализ данных, науку о данных, машинное обучение или искусственный интеллект в той или иной форме. NumPy лежит в основе всех этих областей.
Хотя невозможно точно знать, сколько людей учатся анализировать данные и работать с ними, вполне можно предположить, что десятки тысяч (если не миллионы) людей должны понимать NumPy и как его использовать. Из-за этого я потратил последние три месяца на то, чтобы составить, как я надеюсь, лучшее вводное руководство по NumPy!Если есть что-то, что вы хотите увидеть в этом руководстве, пожалуйста, оставьте примечание в комментариях или обращайтесь в любое время!
Если вы новичок в анализе данных, этот для вас.
Руководство абсолютного новичка по NumPy
Добро пожаловать в NumPy!
Библиотека NumPy содержит многомерный массив и матричные структуры данных (дополнительную информацию об этом вы найдете в следующих разделах). Он предоставляет ndarray, однородный объект n-мерного массива, с методами для эффективной работы с ним. NumPy может использоваться для выполнения самых разнообразных математических операций над массивами. Он добавляет мощные структуры данных в Python, которые гарантируют эффективные вычисления с массивами и матрицами, и предоставляет огромную библиотеку математических функций высокого уровня, которые работают с этими массивами и матрицами.
Установка NumPy
Чтобы установить NumPy, я настоятельно рекомендую использовать научный дистрибутив Python. Если вам нужны полные инструкции по установке NumPy в вашей операционной системе, вы можетенайти все детали здесь,
Если у вас уже есть Python, вы можете установить NumPy с помощью
Если у вас еще нет Python, вы можете рассмотреть возможность использованияанаконда, Это самый простой способ начать. Преимущество этого дистрибутива в том, что вам не нужно слишком беспокоиться об отдельной установке NumPy или каких-либо основных пакетов, которые вы будете использовать для анализа данных, таких как pandas, Scikit-Learn и т. Д.
Если вам нужна более подробная информация об установке, вы можете найти всю информацию об установке наscipy.org,
Если у вас возникли проблемы с установкой Anaconda, вы можете ознакомиться с этой статьей:
Как успешно установить Anaconda на Mac (и на самом деле заставить его работать)
Краткое и безболезненное руководство по правильной установке Anaconda и исправлению страшной ошибки «команда conda not found»
towardsdatascience.com
Как импортировать NumPy
Каждый раз, когда вы хотите использовать пакет или библиотеку в своем коде, вам сначала нужно сделать его доступным.
Чтобы начать использовать NumPy и все функции, доступные в NumPy, вам необходимо импортировать его. Это можно легко сделать с помощью этого оператора импорта:
(Мы сокращаем «numpy» до «np», чтобы сэкономить время и сохранить стандартизированный код, чтобы любой, кто работает с вашим кодом, мог легко его понять и запустить.)
В чем разница между списком Python и массивом NumPy?
NumPy предоставляет вам огромный выбор быстрых и эффективных числовых опций. Хотя список Python может содержать разные типы данных в одном списке, все элементы в массиве NumPy должны быть однородными. Математические операции, которые должны выполняться над массивами, были бы невозможны, если бы они не были однородными.
Зачем использовать NumPy?
Массивы NumPy быстрее и компактнее, чем списки Python. Массив потребляет меньше памяти и намного удобнее в использовании. NumPy использует гораздо меньше памяти для хранения данных и предоставляет механизм задания типов данных, который позволяет оптимизировать код еще дальше.
Что такое массив?
Массив является центральной структурой данных библиотеки NumPy. Это таблица значений, которая содержит информацию о необработанных данных, о том, как найти элемент и как интерпретировать элемент. Он имеет сетку элементов, которые можно проиндексировать вразличные способы Все элементы имеют одинаковый тип, называемыймассив dtype(тип данных).
Одним из способов инициализации массивов NumPy является использование вложенных списков Python.
Мы можем получить доступ к элементам в массиве, используя квадратные скобки. Когда вы получаете доступ к элементам, помните, чтоиндексирование в NumPy начинается с 0, Это означает, что если вы хотите получить доступ к первому элементу в вашем массиве, вы получите доступ к элементу «0».
Выход:
Больше информации о массивах
Каковы атрибуты массива?
В NumPy размеры называютсяоси, Это означает, что если у вас есть 2D-массив, который выглядит так:
Ваш массив имеет 2 оси. Первая ось имеет длину 2, а вторая ось имеет длину 3.
Как и в других объектах-контейнерах Python, к содержимому массива можно получить доступ и изменить его, проиндексировав или разделив массив. Разные массивы могут совместно использовать одни и те же данные, поэтому изменения, внесенные в один массив, могут быть видны в другом.
Атрибуты массива отражают информацию, присущую самому массиву. Если вам нужно получить или даже установить свойства массива без создания нового массива, вы часто можете получить доступ к массиву через его атрибуты.
Как создать базовый массив
Чтобы создать массив NumPy, вы можете использовать функциюnp.array (),
Все, что вам нужно сделать, чтобы создать простой массив, это передать ему список. При желании вы также можете указать тип данных в вашем списке.Вы можете найти больше информации о типах данных здесь,
Вы можете визуализировать ваш массив следующим образом:
Помимо создания массива из последовательности элементов, вы можете легко создать массив, заполненный0s:
Входные данные:
Выход:
Или массив заполнен1s:
Входные данные:
Выход:
Или дажеопорожнитьмассив! Функцияопорожнитьсоздает массив, исходное содержимое которого является случайным и зависит от состояния памяти.
Входные данные:
Вы можете создать массив с диапазоном элементов:
Входные данные:
Выход:
И даже массив, который содержит диапазон равномерно распределенных интервалов. Для этого вам нужно будет указатьпервыйколичество,прошлойномер, аразмер шага,
Входные данные:
Выход:
Вы также можете использоватьnp.linspace ()создать массив со значениями, которые расположены линейно в заданном интервале:
Входные данные:
Выход:
Указание вашего типа данных
Входные данные:
Выход:
Добавление, удаление и сортировка элементов
Если вы начнете с этого массива:
Вы можете добавлять элементы в свой массив в любое время с помощьюnp.append (), Обязательно укажите массив и элементы, которые вы хотите включить.
Входные данные:
Выход:
Вы можете удалить элемент сnp.delete (), Если вы хотите удалить элемент в позиции 1 вашего массива, вы можете запустить:
Входные данные:
Выход:
Сортировка элемента проста сnp.sort (), Вы можете указать ось, вид и порядок при вызове функции.Подробнее о сортировке массива читайте здесь,
Если вы начнете с этого массива:
Вы можете быстро отсортировать числа в порядке возрастания с помощью:
Входные данные:
Выход:
В дополнение к sort, который возвращает отсортированную копию массива, вы можете использовать:argsort, который являетсянепрямая сортировка по указанной оси,lexsort, который являетсянепрямая стабильная сортировка по нескольким ключам,searchsorted, который будетнайти элементы в отсортированном массиве, а такжераздел, который являетсячастичная сортировка,
Как вы знаете форму и размер массива?
ndarray ndimскажет вам количество осей или размеров массива.
ndarray.sizeскажет вам общее количество элементов массива. Этопродуктэлементов формы массива.
ndarray.shapeбудет отображать кортеж целых чисел, которые указывают количество элементов, хранящихся вдоль каждого измерения массива. Если, например, у вас есть 2D-массив с 2 строками и 3 столбцами, форма вашего массива будет (2,3).
Например, если вы создаете этот массив:
Чтобы узнать количество измерений массива, запустите:
Входные данные:
Выход:
Чтобы найти общее количество элементов в массиве, запустите:
Входные данные:
Выход:
И чтобы найти форму вашего массива, запустите:
Входные данные:
Выход:
Можете ли вы изменить форму массива?
С помощьюnp.reshape ()придаст массиву новую форму без изменения данных. Просто помните, что когда вы используете метод reshape, массив, который вы хотите создать, должен иметь то же количество элементов, что и исходный массив. Если вы начинаете с массива из 12 элементов, вам нужно убедиться, что ваш новый массив также содержит в общей сложности 12 элементов.
Если вы начнете с этого массива:
Выход:
Вы можете использоватьИзменение формы ()изменить свой массив. Например, вы можете изменить этот массив в массив с тремя строками и двумя столбцами:
Входные данные:
Выход:
Сnp.reshapeВы можете указать несколько дополнительных параметров:
Входные данные:
это массив, который будет изменен.
newshapeэто новая форма, которую вы хотите. Вы можете указать целое число или кортеж целых чисел. Если вы укажете целое число, результатом будет массив этой длины. Форма должна быть совместима с оригинальной формой.
приказ: «C» означает чтение / запись элементов с использованием C-подобного порядка индексов, «F» означает чтение / запись элементов с использованием Fortran-подобного порядка индексов, «A» означает чтение / запись элементов в Fortran-подобном индексе порядок, если a является непрерывным в памяти Fortran, C-подобный порядок в противном случае. (Это необязательный параметр, указывать его не нужно.)
Как преобразовать одномерный массив в двухмерный массив (как добавить новую ось в массив)
Вы можете использоватьnp.newaxisа такжеnp.expand_dimsувеличить размеры вашего существующего массива.
С помощьюnp.newaxisувеличит размеры вашего массива на одно измерение при использовании один раз. Это означает, что1Dмассив станет2Dмассив,2Dмассив станет3Dмассив и тд.
Например, если вы начинаете с этого массива:
Выход:
Вы можете использовать np.newaxis, чтобы добавить новую ось:
Входные данные:
Выход:
Вы можете явно преобразовать одномерный массив с вектором строки или вектором столбца, используяnp.newaxis, Например, вы можете преобразовать одномерный массив в вектор строки, вставив ось вдоль первого измерения:
Входные данные:
Выход:
Или, для вектора столбца, вы можете вставить ось вдоль второго измерения:
Входные данные:
Выход:
Вы также можете расширить массив, вставив новую ось в указанной позиции с помощьюnp.expand_dims,
Например, если вы начинаете с этого массива:
Входные данные:
Выход:
Вы можете использоватьnp.expand_dimsдобавить ось в позиции индекса 1 с помощью:
Входные данные:
Выход:
Вы можете добавить ось в позиции индекса 0 с помощью:
Входные данные:
Выход:
Индексирование и нарезка
Вы можете индексировать и разрезать массивы NumPy так же, как вы можете разрезать списки Python.
Входные данные:
Выход:
Вы можете визуализировать это так:
Возможно, вы захотите взять часть вашего массива или определенные элементы массива для использования в дальнейшем анализе или дополнительных операциях. Чтобы сделать это, вам нужно поднастроить, нарезать и / или проиндексировать ваши массивы.
Если вы хотите выбрать значения из вашего массива, которые удовлетворяют определенным условиям, это просто с NumPy.
Например, если вы начинаете с этого массива:
Вы можете легко распечатать все значения в массиве, которые меньше 5.
Входные данные:
Выход:
Вы также можете выбрать, например, числа, которые равны или больше 5, и использовать это условие для индексации массива.
Входные данные:
Выход:
Вы можете выбрать элементы, которые делятся на 2:
Входные данные:
Выход:
Или вы можете выбрать элементы, которые удовлетворяют двум условиям, используя&а также|операторы:
Входные данные:
Выход:
Хотя это было бы невероятно неэффективно для этого массива, вы также можете использовать логические операторы&а также|чтобы возвращать логические значения, которые указывают, удовлетворяют ли значения в массиве определенному условию. Это может быть полезно с массивами, которые содержат имена или другие категориальные значения
Входные данные:
Выход:
Вы также можете использоватьnp.where ()выбрать элементы или индексы из массива.
Начиная с этого массива:
Входные данные:
Вы можете использоватьnp.where ()напечатать индексы элементов, которые, например, меньше 5:
Входные данные:
Выход:
В этом примере был возвращен кортеж массивов: по одному для каждого измерения. Первый массив представляет индексы строк, в которых находятся эти значения, а второй массив представляет индексы столбцов, в которых находятся эти значения.
Если вы хотите создать список координат, в котором существуют элементы, вы можете сжать массивы, выполнить итерацию по списку координат и распечатать их. Например:
Входные данные:
Вы также можете использоватьnp.where ()распечатать элементы в массиве меньше 5 с помощью:
Входные данные:
Выход:
Если искомый элемент не существует в массиве, то возвращенный массив индексов будет пустым. Например:
Входные данные:
Выход:
Как создать массив из существующих данных
Вы можете легко использовать создание нового массива из раздела существующего массива. Допустим, у вас есть этот массив:
Вы можете создать новый массив из секции вашего массива в любое время, указав, где вы хотите нарезать массив.
Входные данные:
Выход:
Здесь вы захватили секцию вашего массива с позиции индекса 3 до позиции индекса 8.
Вы также можете сложить два существующих массива, как вертикально, так и горизонтально. Допустим, у вас есть два массива:
а такжеa_2:
Вы можете сложить их вертикально сvstack:
Входные данные:
Выход:
Или сложите их горизонтальноhstack:
Входные данные:
Выход:
Вы можете разбить массив на несколько меньших массивов, используя hsplit. Вы можете указать количество возвращаемых массивов одинаковой формы или столбцовпослекоторый разделение должно произойти.
Допустим, у вас есть этот массив:
Если вы хотите разделить этот массив на три одинаковых по форме массива, вы должны выполнить:
Входные данные:
Выход:
Если вы хотите разделить массив после третьего и четвертого столбцов, вы должны выполнить:
Входные данные:
Выход:
Вы можете использовать метод view для создания нового объекта массива, который просматривает те же данные, что и исходный массив (мелкая копия)
Допустим, вы создали этот массив:
Входные данные:
Вы можете создать новый объект массива, который просматривает те же данные, используя:
Входные данные:
Использование метода copy сделает полную копию массива и его данных (aглубокая копия). Чтобы использовать это в вашем массиве, вы можете запустить:
Входные данные:
Основные операции с массивами
Вы можете добавить массивы вместе со знаком плюс.
Вы можете, конечно, сделать больше, чем просто дополнение!
Основные операции просты с NumPy. Если вы хотите найти сумму элементов в массиве, вы бы использовали sum (). Это работает для 1D-массивов, 2D-массивов и массивов в более высоких измерениях.
Входные данные:
Выход:
Чтобы добавить строки или столбцы в 2D-массив, вы должны указать ось.
Если вы начнете с этого массива:
Входные данные:
Вы можете суммировать строки с:
Входные данные:
Выход:
Вы можете суммировать столбцы с:
Входные данные:
Выход:
вещания
Есть моменты, когда вы можете захотеть выполнить операцию между массивом и одним числом (также называетсяоперация между вектором и скаляром) или между массивами двух разных размеров. Например, ваш массив (назовем его «данные») может содержать информацию о расстоянии в милях, но вы хотите преобразовать информацию в километры. Вы можете выполнить эту операцию с:
Более полезные операции с массивами
NumPy также выполняет функции агрегирования. В дополнении кмин,Максимум, а такжесумма, вы можете легко запуститьозначатьчтобы получить среднее значение,тычокчтобы получить результат умножения элементов вместе,стандчтобы получить стандартное отклонение и многое другое
Давайте начнем с этого массива, называемого «А»
Распространено стремление объединяться вдоль строки или столбца. По умолчанию каждая функция агрегации NumPy возвращает агрегат всего массива. Чтобы найти сумму или минимум элементов в вашем массиве, запустите:
Входные данные:
Выход:
Вы можете указать, по какой оси вы хотите вычислить функцию агрегирования. Например, вы можете найти минимальное значение в каждом столбце, указав axis = 0.
Входные данные:
Выход:
Четыре значения, перечисленные выше, соответствуют количеству столбцов в вашем массиве. С массивом из четырех столбцов вы получите четыре значения в качестве результата.
Как проверить размер и форму массива NumPy
Вы можете получить размеры массива NumPy в любое время, используяndarray.shape, NumPy вернет размеры массива в виде кортежа.
Например, если вы создаете этот массив:
Входные данные:
Вы можете использоватьnp.shapeчтобы найти форму вашего массива.
Входные данные:
Выход:
Этот вывод говорит вам, что ваш массив имеет три строки и четыре столбца.
Вы можете найти только количество строк, указав [0]:
Входные данные:
Выход:
Или просто количество столбцов, указав [1]:
Входные данные:
Выход:
Также легко найти общее количество элементов в вашем массиве:
Входные данные:
Выход:
Вы можете использоватьnp.shape ()с 1D массивом. Если вы создаете этот массив:
Входные данные:
Вы можете распечатать форму и длину массива.
Выход:
Вы можете получить размеры массива, используяnp.size (),
Входные данные:
Выход:
Вы также можете распечатать общее количество элементов:
Входные данные:
Выход:
Это также работает для 3D-массивов:
Входные данные:
Вы можете легко напечатать размер оси:
Входные данные:
Выход:
Вы можете распечатать общее количество элементов:
Входные данные:
Выход:
Вы также можете использоватьnp.size ()с 1D массивами:
Входные данные:
Выход:
Помните, что если вы проверяете размер вашего массива и он равен 0, ваш массив будет пустым.
Создание матриц
Вы можете передать списки списков Python, чтобы создать матрицу для их представления в NumPy.
Индексирование и нарезка полезны, когда вы манипулируете матрицами:
Вы можете агрегировать матрицы так же, как вы агрегировали векторы:
Вы можете объединить все значения в матрице и объединить их по столбцам или строкам, используя параметр оси:
После того, как вы создали свои матрицы, вы можете добавлять и умножать их с помощью арифметических операторов, если у вас есть две матрицы одинакового размера.
Вы можете выполнять эти арифметические операции над матрицами разных размеров, но только если одна матрица имеет только один столбец или одну строку. В этом случае NumPy будет использовать свои правила вещания для операции.
Имейте в виду, что когда NumPy печатает N-мерные массивы, последняя ось зацикливается на самой быстрой, а первая ось самая медленная. Что означает, что:
Входные данные:
Выход:
Часто бывают случаи, когда мы хотим, чтобы NumPy инициализировал значения массива. NumPy предлагает такие методы, какиз них (),Нули (),а такжеrandom.random ()для этих случаев. Все, что вам нужно сделать, это указать количество элементов, которые вы хотите сгенерировать.
Генерация случайных чисел
Использование генерации случайных чисел является важной частью конфигурации и оценки алгоритмов машинного обучения. Необходима ли вам случайная инициализация весов в искусственной нейронной сети, разделение данных на случайные наборы или случайное перемешивание набора данных, очень важно иметь возможность генерировать случайные числа (фактически, повторяемые псевдослучайные числа).
У вас есть несколько вариантов при использовании NumPy для генерации случайных чисел.Генератор случайных чиселявляется заменой NumPy дляRandomState, Основное различие между ними заключается в том, что Генератор полагается на дополнительный BitGenerator для управления состоянием и генерирования случайных битов, которые преобразуются в случайные значения.
СGenerator.integersвы можете генерировать случайные целые числа от низкого (помните, что это включительно с NumPy) до высокого (эксклюзив). Вы можете установитьendopoint = Trueсделать большое число включительно.
Вы можете создать массив случайных целых чисел от 2 до 4 между 0 и 4 с помощью
Входные данные:
Выход:
Вы также можете использоватьиз них (),Нули (), а такжеслучайным образом ()методы для создания массива, если вы дадите им кортеж, описывающий размеры матрицы.
Как получить уникальные предметы и количество
Вы можете легко найти уникальные элементы в массиве сnp.unique,
Например, если вы начинаете с этого массива:
Входные данные:
вы можете использоватьnp.unique
Входные данные:
Выход:
Чтобы получить индексы уникальных значений в массиве NumPy (массив первых позиций индекса уникальных значений в массиве), просто передайте аргумент return_index вnp.unique ()а также ваш массив.
Входные данные:
Выход:
Вы можете передать return_counts аргумент вnp.unique ()вместе с вашим массивом, чтобы получить частоту уникальных значений в массиве NumPy.
Входные данные:
Выход:
Это также работает с 2D массивами. Если вы начнете с этого массива:
Вы можете найти уникальные значения с:
Входные данные:
Выход:
Если аргумент оси не передан, ваш 2D-массив будет сглажен.
Входные данные:
Выход:
Чтобы получить уникальные строки, количество вхождений и позицию индекса, вы можете использовать:
Входные данные:
Выход:
Транспонирование и изменение формы матрицы
Обычно нужно вращать ваши матрицы. NumPy массивы имеют свойствоTэто позволяет вам транспонировать матрицу.
Вам также может потребоваться изменить размеры матрицы. Это может произойти, когда, например, у вас есть модель, которая ожидает определенную входную форму, отличную от вашего набора данных. Это где метод изменения формы может быть полезным. Вам просто нужно передать новые измерения, которые вы хотите для матрицы.
Вы также можете использоватьnp.transposeповернуть или изменить оси массива в соответствии с указанными значениями.
Если вы начнете с этого массива:
Выход:
Вы можете транспонировать ваш массив сnp.transpose (),
Входные данные:
Выход:
Как перевернуть массив
NumPy-хnp.flip ()Функция позволяет переворачивать или переворачивать содержимое массива вдоль оси. Когда используешьnp.flipукажите массив, который вы хотите повернуть, и ось. Если вы не укажете ось, NumPy обратит содержимое по всем осям вашего входного массива.
Реверсивный 1D массив
Если вы начинаете с одномерного массива, как этот:
Вы можете изменить это с помощью:
Если вы хотите распечатать свой обратный массив, вы можете запустить:
Входные данные:
Выход:
Реверсивный 2D массив
2D массив работает практически так же.
Если вы начнете с этого массива:
Входные данные:
Вы можете изменить содержимое всех строк и всех столбцов с помощью:
Входные данные:
Выход:
Вы можете легко изменить только строки с помощью:
Входные данные:
Выход:
Или поменяйте местами только столбцы с:
Входные данные:
Выход:
Вы также можете изменить содержимое только одного столбца или строки. Например, вы можете перевернуть содержимое строки в позиции индекса 1 (вторая строка):
Входные данные:
Выход:
Вы также можете повернуть столбец в позиции индекса 1 (второй столбец):
Входные данные:
Выход:
Изменение формы и уплощение многомерных массивов
Существует два популярных способа выравнивания массива:.flatten ()а также.ravel (). Основное различие между ними состоит в том, что новый массив создан с использованиемРавель ()на самом деле ссылка на родительский массив. Это означает, что любые изменения в новом массиве также будут влиять на родительский массив. посколькузапутыватьне создает копию, это эффективная память.
Если вы начнете с этого массива:
Вы можете использоватьрасплющитьчтобы сгладить ваш массив в одномерный массив.
Входные данные:
Выход:
Когда вы используетерасплющитьизменения в вашем новом массиве не изменят родительский массив.
Входные данные:
Выход:
Но когда вы используете rank, изменения, которые вы вносите в новый массив, влияют на родительский массив.
Входные данные:
Выход:
Как получить доступ к документации для получения дополнительной информации
Когда дело доходит до экосистемы науки о данных, Python и NumPy создаются с учетом потребностей пользователя. Одним из лучших примеров этого является встроенный доступ к документации. Каждый объект содержит ссылку на строку, которая называется строкой документации. В большинстве случаев эта строка документации содержит краткое и краткое описание объекта и его использования. Python имеет встроенныйПомогите()функция, которая может помочь вам получить доступ к этой информации. Это означает, что почти каждый раз, когда вам нужно больше информации, вы можете использоватьПомогите()быстро найти нужную информацию
Поскольку доступ к дополнительной информации очень полезен, IPython использует?символ в качестве сокращения для доступа к этой документации вместе с другой соответствующей информацией.
Вы даже можете использовать эту запись для методов объекта и самих объектов.
Допустим, вы создали этот массив:
Вернет много полезной информации.
Это также работает для функций и других объектов, которые вы создаете. Просто не забудьте включить строку документации в свою функцию, используя строковый литерал («« «»или‘’ ’‘ ’’вокруг вашей документации).
Например, если вы создаете эту функцию:
Вы можете запустить:
Вы можете перейти на другой уровень информации, прочитав исходный код интересующего вас объекта. Используя двойной знак вопроса (??) позволяет получить доступ к исходному коду.
Если рассматриваемый объект скомпилирован на языке, отличном от Python, используя??вернет ту же информацию, что и?, Вы найдете это с большим количеством встроенных объектов и типов, например:
Выход:
Выход:
Получите тот же вывод, потому что они были скомпилированы на языке программирования, отличном от Python.
Работа с математическими формулами
Реализация математических формул, которые работают с массивами, является одной из вещей, которые делают NumPy столь высоко оцененным в научном сообществе Python.
Например, это формула среднеквадратичной ошибки (центральная формула, используемая в контролируемых моделях машинного обучения, которые имеют дело с регрессией):
Реализация этой формулы проста и понятна в NumPy:
Что делает эту работу такой хорошей, так это то, что прогнозы и метки могут содержать одно или тысячу значений. Они должны быть одинакового размера.
Вы можете визуализировать это так:
Как сохранить и загрузить объекты NumPy
Это легко сохранить и загрузить и массив сnp.save (), Просто убедитесь, что вы указали массив, который хотите сохранить, и имя файла. Например, если вы создаете этот массив:
Вы можете сохранить его как «filename.npy» с
Вы можете использоватьnp.load ()реконструировать ваш массив.
Если вы хотите проверить свой массив, вы можете запустить:
Входные данные:
Выход:
Вы можете сохранить массив NumPy в виде простого текстового файла, такого как CSV или TXT-файл, с помощьюnp.savetxt,
Например, если вы создаете этот массив:
Вы можете быстро и легко загрузить сохраненный текстовый файл, используяloadtxt ():
Входные данные:
Выход:
Сsavetxt, вы можете указать колонтитулы, комментарии и многое другое.Узнайте больше о savetxt здесь,
Помните, что загрузка файлов, содержащих массивы объектов, сnp.load ()использует модуль pickle, который не защищен от ошибочных или злонамеренных данных Подумайте о прохождении allow_pickle=False загружать данные, о которых известно, что они не содержат массивов объектов, для более безопасной обработки ненадежных источников.
Импорт и экспорт CSV
Использовать Pandas также просто, чтобы экспортировать ваш массив. Если вы новичок в NumPy, вы можете создать фрейм данных Pandas из значений в вашем массиве, а затем записать фрейм данных в CSV-файл с помощью Pandas.
Если вы создали этот массив «а»
Вы могли бы создать фрейм данных Pandas
Вы можете легко сохранить свой фрейм данных с
И читать ваш CSV с
Вы также можете сохранить свой массив с помощью метода NumPy «savetxt».
Читайте сохраненный CSV в любое время с помощью команды, такой как
Входные данные:
Выход:
Если вы хотите узнать больше о Пандах, взгляните на официальнуюПандыВеб-сайт. Узнайте, как установить Pandas софициальная информация об установке Pandas,
Построение массивов с помощью Matplotlib
Если вам нужно создать график для ваших значений, это очень просто сMatplotlib,
Например, у вас может быть такой массив:
Если у вас уже установлен Matplotlib, вы можете импортировать его с помощью
Все, что вам нужно сделать, чтобы построить ваши ценности, это запустить
Входные данные:
Выход:
Например, вы можете построить 1D массив следующим образом:
Входные данные:
С Matplotlib у вас есть доступ к огромному количеству вариантов визуализации.
Чтобы узнать больше о Matplotlib и о том, что он может сделать, взгляните наофициальная документация, Инструкции по установке Matplotlib смотрите в официальномраздел установки,
Спасибо за чтение! Если здесь есть что-то, что, по вашему мнению, должно быть включено, пожалуйста, дайте мне знать. Не стесняйтесь оставить комментарий ниже или обратиться в любое времяLinkedInилищебет, Если вы хотите прочитать больше моих уроков, посмотрите мой профиль здесь на Medium:Энн Боннер❤️