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

Презентация:



Advertisements
Похожие презентации
Python как инструмент Data Mining Лекция 4.4 Инструменты Data Mining Зырянов Александр Олегович.
Advertisements

Решение математических и экономических задач средствами MATLAB.
Учитель Лесконог Е.В.. Содержание Понятие табличной формулы. Особенности ввода табличной формулы. Понятие матрицы. Виды матриц. Понятие определителя.
Алгоритмический трейдинг c Python Денис Колодин ген. директор AlgoMarkets LLC Денис Колодин ген. директор AlgoMarkets LLC.
Реализация индексного анализа для деревьев циклов любого вида сложности Выполнил : студент 818 гр. Юдин Павел Научный руководитель : к. т. н. Муханов Л.
Основные понятия программирования. АЛГОРИТМЫ + ДАННЫЕ = ПРОГРАММЫ Н. Вирт.
Cистема аналитических вычислений MAPLE Введение. Что представляет собой Waterloo Maple? Калькулятор «Машина» символьной математики Среда для решения математических.
Разработка эффективных параллельных алгоритмов с использованием технологий Интел. Параллельные алгоритмы спектрального анализа Панкратов Антон Николаевич.
FBD В cреде CoDeSys Язык FBD Язык FBD (Functional Block Diagram, Диаграмма Функциональных Блоков) является языком графического программирования,
Исследование алгебраических моделей Информатика и ИКТ 11 класс.
«Обработка массивов данных» Delphi. Тема 4:4: «Обработка массивов данных» План темы: l1l1. Понятие массива данных. l2l2. Описание массива в программе.
Классификация сигналов Под сигналом обычно понимают величину, отражающую состояние физической системы. Поэтому естественно рассматривать сигналы как функции,
Применение конвертируемых режимов адресации для повышения производительности сопроцессоров цифровой обработки сигналов в составе многоядерной СнК Пантелеев.
Язык программирования формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических.
Применение ИТ – технологий Применение ИТ В науке и фундаментальных исследованиях В производстве 2. Программное обеспечение Системы компьютерной.
Витковский В.В., Жимаев И.В. Специальная Астрофизическая обсерватория РАН Ставропольский государственный университет.
Методы обработки экспериментальных данных. Методы обработки экспериментальных данных: 1. Интерполирование 2. Метод Лагранжа.
Алгоритм. Алгоритм это точно определённая инструкция, последовательно применяя которую к исходным данным, можно получить решение задачи. Для каждого алгоритма.
Среда MatLab для решения задач математического программирования Макарова А.А. Антонова А.А. 3 курс, Информатика.
Транксрипт:

NumPy, SciPy

это открытая библиотека высококачественных научных инструментов для языка программирования Python. SciPy содержит модули для оптимизации интегрирования специальных функций обработки сигналов обработки изображений генетических алгоритмов решения обыкновенных дифференциальных уравнений, и других задач, обычно решаемых в науке и при инженерной разработке. Библиотека разрабатывается для той же аудитории, что MATLAB и Scilab. Для визуализации при использовании SciPy часто применяют библиотеку Matplotlib, являющуюся аналогом средств вывода графики MATLAB. SciPy

М ОДУЛИ constants Физические константы и коэффициенты пересчёта (с версии 0.7.0) cluster Векторное квантование fftpack Дискретные алгоритмы преобразования Фурье integrate Инструменты для интегрирования interpolate Инструменты для интерполяции io Ввод/вывод данных lib Врапперы Python для внешних библиотек linalg Линейная алгебра misc Разные утилиты optimize Средства оптимизации sandbox Экспериментальный код signal Обработка сигналов sparse Поддержка разреженных матриц special Специальные функции stats Статистические функции weave Позволяет включение кода C/C++ внутри кода Python

С ТРУКТУРЫ ДАННЫХ Основной структурой данных в SciPy является многомерный массив, реализованный модулем NumPy. Более старые версии SciPy использовали для этой цели Numeric, который сейчас заменён на более новый NumPy

это расширение языка Python, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами. Сайт: Поддерживаемые версии Python: 2.5, 2.6 (есть более старые версии, которые поддерживают Python 2.3 и 2.4) Документация:

Н АУЧНЫЕ ВЫЧИСЛЕНИЯ В P YTHON Работа с матрицами и векторами Быстрое преобразование Фурье (одномерное и двумерное) Компиляция модулей на фортране Работа с полиномами (вычисление корней полинома, математические операции с полиномами и т.п.) Функции для линейной алгебры (вычисление определителя матрицы, вычисление обратных матриц, решение системы линейных уравнений и т.п.)

N UMERIC VS NUMARRAY VS NUMPY Существует 3 различных реализации Numeric Python (NumPy) Numeric – самый первый, следовательно самый распространенный numarray – переделка, с дополнениями numpy – переделка, смесь первых двух, с усовершенствованиями Все эти пакеты имеют сходный интерфейс. Реализационные различия: numpy быстрее для векторных операций Numeric – для скалярных Все сказанное означает, что можно использовать как и numpy, так и наиболее общий интерфейс Numerical Python, т.к. любая из трех реализаций может быть Вами использована в последствии

М ОТИВАЦИЯ Математические алгоритмы часто работают в Python гораздо медленнее, чем в компилируемых языках. NumPy пытается решить эту проблему для большого количества вычислительных алгоритмов, обеспечивая поддержку многомерных массивов и множество функций и операторов для работы с ними. Альтернатива MATLAB

Векторизация (прорисовка): массивы исключают потребность в циклах, проходящих по их элементам Массивы с одним индексом – вектора; с двумя - используются для создания матриц и представления табличной информации; n -мерные. З АЧЕМ НУЖНЫ МАССИВЫ ?

работа с модулем происходит обычным образом: from numpy import * Конвертирование списка r в массив a происходит привычным способом, но с помощью импортированной из numpy функции: a = array(r) Для того, чтобы создать массив из n нулевых элементов используем функцию zeros: a = zeros(n) Часто бывает нужно создать массив из элементов, равномерно распределенных в интервале [ p, q ]. Для этого в numpy есть функция linspace: a = linspace(p, q, n)

В ЕКТОРИЗАЦИЯ функция может применяться к самому массиву и производить действия над всеми элементами И даже сложные составные выражения r = sin(x)*cos(x)*exp(-x** 2 ) x** 2 подвластны волшебству массивов: r = zeros( len (x)) for i in xrange ( len (x)): r[i] = sin(x[i])*cos(x[i])*exp(-x[i]** 2 ) x[i]** 2 + существенный выигрыш в скорости по сравнению со списками существенно повышает скорость обработки делает код более понятным и ясным для чтения

Р АБОТА С МАТРИЦАМИ Два класса - array и matrix. Различия в некоторых операциях над экземплярами классов: оператор * для array производит поэлементное перемножение хранимых в матрице величин. А для перемножения матриц по правилам линейной алгебры есть метод dot.

import numpy # Создание матрицы a = numpy.array ([[1, 2, 3], [4, 5, 6], [7, 8, 9]], "f") print a >>> [[ ] [ ] [ ]]

# Создадим единичную матрицу размера 3 x 3. Матрица будет хранить числа с плавающей точкой. a = numpy.ones ([3,3], "f") print a >>> [[ ] [ ] [ ]] b = numpy.ones ([3,3], "f") b *= 2 print b >>> [[ ] [ ] [ ]] c = a + b print c >>> [[ ] [ ] [ ]]

П ЕРЕМНОЖЕНИЕ МАТРИЦ И ИХ ЭЛЕМЕНТОВ a = numpy.array ([[1, 2, 3], [4, 5, 6]], "f") print a >>> [[ ] [ ]] b = numpy.array ([[0, 1, 2], [4, -1, 1]], "f") print b >>> [[ ] [ ]] # Поэлементное перемножение c1 = a * b print c1 >>> [[ ] [ ]] # Транспонирование матрицы bt = b.T print bt >>> [[ 0. 4.] [ ] [ 2. 1.]] # Перемножение матриц c2 = numpy.dot(a, bt) print c2 >>> [[ 8. 5.] [ ]]

У ДОБНО ВЫДЕЛЯТЬ ЧАСТИ МАТРИЦ a = numpy.array ([[1, 2, 3], [4, 5, 6], [7, 8, 9]], "f") print a >>> [[ ] [ ] [ ]] tmp = a[:, 0] print tmp >>> [ ] tmp2 = a[0:2, 1:3] print tmp2 >>> [[ 2. 3.] [ 5. 6.]] # Так же работает присваивание a = numpy.zeros([3, 3], "f") print a >>> [[ ] [ ] [ ]] a[:, 0] = [n for n in range(3)] print a >>> [[ ] [ ] [ ]]

И НТЕГРИРОВАНИЕ import scipy from scipy.integrate import quad def integrand(t,n,x): return n*x*t def expint(n,x): return quad(integrand, 1, 4, args=(n, x))[0] print expint(2,1) >>> 15.0

О ПТИМИЗАЦИЯ from scipy.optimize import fmin def rosen(x): """The Rosenbrock function""" return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0) x0 = [1.3, 0.7, 0.8, 1.9, 1.2] xopt = fmin(rosen, x0, xtol=1e-8) print xopt >>> Optimization terminated successfully. Current function value: Iterations: 339 Function evaluations: 571 [ ]