Добрый день. Я сейчас прохожу курс повышения квалификации - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?
|
Численные алгоритмы. Матричные вычисления
Numeric Python
Numeric Python - это несколько модулей для вычислений с многомерными массивами, необходимых для многих численных приложений. Модуль Numeric вносит в Python возможности таких пакетов и систем как MatLab, Octave (аналог MatLab), APL, J, S+, IDL. Пользователи найдут Numeric достаточно простым и удобным. Стоит заметить, что некоторые синтаксические возможности Python (связанные с использованием срезов) были специально разработаны для Numeric.
Numeric Python имеет средства для:
- матричных вычислений LinearAlgebra ;
- быстрого преобразования Фурье FFT ;
- работы с недостающими экспериментальными данными MA ;
- статистического моделирования RNG ;
- эмуляции базовых функций программы MatLab.
Модуль Numeric
Модуль Numeric определяет полноценный тип-массив и содержит большое число функций для операций с массивами. Массив - это набор однородных элементов, доступных по индексам. Массивы модуля Numeric могут быть многомерными, то есть иметь более одной размерности.
Создание массива
Для создания массива можно использовать функцию array() с указанием содержимого массива (в виде вложенных списков) и типа. Функция array() делает копию, если ее аргумент - массив. Функция asarray() работает аналогично, но не создает нового массива, когда ее аргумент уже является массивом:
>>> from Numeric import * >>> print array([[1, 2], [3, 4], [5, 6]]) [[1 2] [3 4] [5 6]] >>> print array([[1, 2, 3], [4, 5, 6]], float) [[ 1. 2. 3.] [ 4. 5. 6.]] >>> print array([78, 85, 77, 69, 82, 73, 67], 'c') [N U M E R I C]
В качестве элементов массива можно использовать следующие типы: Int8-Int32, UnsignedInt8-UnsignedInt32, Float8-Float64, Complex8-Complex64 и PyObject. Числа 8, 16, 32 и 64 показывают количество битов для хранения величины. Типы Int, UnsignedInteger, Float и Complex соответствуют наибольшим принятым на данной платформе значениям. В массиве можно также хранить ссылки на произвольные объекты.
Количество размерностей и длина массива по каждой оси называются формой массива (shape). Доступ к форме массива реализуется через атрибут shape:
>>> from Numeric import * >>> a = array(range(15), int) >>> print a.shape (15,) >>> print a [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14] >>> a.shape = (3, 5) >>> print a.shape (3, 5) >>> print a [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]]
Методы массивов
Придать нужную форму массиву можно функцией Numeric.reshape(). Эта функция сразу создает объект-массив нужной формы из последовательности.
>>> import Numeric >>> print Numeric.reshape("абракадабр", (5, -1)) [[а б] [р а] [к а] [д а] [б р]]
В этом примере -1 в указании формы говорит о том, что соответствующее значение можно вычислить. Общее количество элементов массива известно (10), поэтому длину вдоль одной из размерностей задавать не обязательно.
Через атрибут flat можно получить одномерное представление массива:
>>> a = array([[1, 2], [3, 4]]) >>> b = a.flat >>> b array([1, 2, 3, 4]) >>> b[0] = 9 >>> b array([9, 2, 3, 4]) >>> a array([[9, 2], [3, 4]])
Следует заметить, что это новый вид того же массива, поэтому присваивание значений его элементам приводит к изменениям в исходном массиве.
Функция Numeric.resize() похожа на Numeric.reshape, но может подстраивать число элементов:
>>> print Numeric.resize("NUMERIC", (3, 2)) [[N U] [M E] [R I]] >>> print Numeric.resize("NUMERIC", (3, 4)) [[N U M E] [R I C N] [U M E R]]
Функция Numeric.zeros() порождает массив из одних нулей, а Numeric.ones() - из одних единиц. Единичную матрицу можно получить с помощью функции Numeric.identity(n):
>>> print Numeric.zeros((2,3)) [[0 0 0] [0 0 0]] >>> print Numeric.ones((2,3)) [[1 1 1] [1 1 1]] >>> print Numeric.identity(4) [[1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1]]
Для копирования массивов можно использовать метод copy():
>>> import Numeric >>> a = Numeric.arrayrange(9) >>> a.shape = (3, 3) >>> print a [[0 1 2] [3 4 5] [6 7 8]] >>> a1 = a.copy() >>> a1[0, 1] = -1 # операция над копией >>> print a1 [[0 -1 2] [3 4 5] [6 7 8]]
Массив можно превратить обратно в список с помощью метода tolist():
>>> a.tolist() [[0, 1, 2], [3, 4, 5], [6, 7, 8]]