Программирование и научные вычисления на языке Python/§8: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 105:
* Массивы не являются стандартной частью Python — они требуют специального дополнительного пакета, которым пользуются практически все, кто занимаются научными проектами на Python. Этот пакет называется ''Numerical Python'' или еще чаще ''NumPy'', поскольку после его установки вызов осуществляется с помощью обычной инструкции импорта модуля: <tt>import numpy</tt>. Для того, чтобы установить NumPy, загрузите его с [http://www.scipy.org/Download официального сайта проекта]. На этой же странице вы обнаружите еще один пакет, который нам понадобится в дальнейшем — SciPy.
* С <tt>numpy</tt> широкий круг математических операций может быть решен непосредственно с помощью массивов, таким образом исключается потребность в циклах, проходящих по элементам массива. Это свойство носит названия векторизации (vectorization) или прорисовки.
* Массивы с одним индексом также называют векторами. Массивы с двумя индексами используются для создания матриц и представления табличной информации. Массив может содержать практически любое количество индексов, то есть быть ''n''-мерным.
 
Как уже было сказано, после установки пакета, работа с модулем происходит обычным образом:
 
 
<source lang="python">from numpy import *</source>
 
 
Конвертирование списка <tt>r</tt> в массив <tt>a</tt> происходит привычным способом, но с помощью импортированной из numpy функции:
 
 
<source lang="python">a = array(r)</source>
 
 
Для того, чтобы создать массив из ''n'' нулевых элементов используем функцию zeros:
 
 
<source lang="python">a = zeros(n)</source>
 
 
Элементы по умолчанию являются float-объектами, второй аргумент функции позволяет изменить тип объектов, например, на int. Часто бывает нужно создать массив из элементов равномерно, распределенных в интервале [''p'', ''q'']. Для этого в numpy есть функция <tt>linspace</tt>:
 
 
<source lang="python">a = linspace(p, q, n)</source>
 
 
Вообще говоря в numpy имеется огромное количество функций и внутренних модулей.
 
Доступ к элементу осуществляется так же как в списках, например, <tt>a[1]</tt>. Срезы тоже здесь работают, например срез a[1:-1], извлекает список всех элементов, кроме первого и последнего. Но в отличие от списка, здесь это не копия. Например:
 
 
<source lang="python">b = a[1:-1]
b[2] = 0.1</source>
 
 
изменится и массив <tt>a</tt>, его элемент <tt>a[3]=0.1</tt>.
 
 
===К слову о срезах===
Срез в формате <tt>a[i:j:s]</tt> выбирает все элементы, начиная с <tt>i</tt>, заканчивая, но не включая, <tt>j</tt> с шагом <tt>s</tt>. Например, срез <tt>a[0:-1:2]</tt> выбирает каждый второй элемент, кроме последнего. Как и ранее, возможны пропуски аргументов, например <tt>a[::4]</tt> выберет каждый четвертый элемент. Можно взять и отрицательный шаг, тогда элементы будут идти в обратном порядке.
 
 
==Задание координат и значений функций==