Array Array - Язык программирования Python
- Название:Язык программирования Python
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Array Array - Язык программирования Python краткое содержание
Язык программирования Python - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
>>> x = LinearAlgebra.solve_linear_equations(a, b)
>>> print «x =", x
x = [-1.8 1.5]
>>> print «Проверка:", Numeric.dot(a, x) - b
Проверка: [ 0. 0.]
Когда матрица a имеет нулевой определитель, система имеет не единственное решение и возбуждается исключение LinearAlgebraError:
Листинг
>>> a = Numeric.array([[1.0, 2.0], [0.5, 1.0]])
>>> x = LinearAlgebra.solve_linear_equations(a, b)
Traceback (most recent call last):
File "", line 1, in ?
File "/usr/local/lib/python2.3/site–packages/Numeric/LinearAlgebra.py», line 98,
in solve_linear_equations raise LinAlgError, 'Singular matrix'
LinearAlgebra.LinAlgError: Singular matrix
Функция LinearAlgebra.inverse() находит обратную матрицу. Однако не следует решать линейные уравнения с помощью LinearAlgebra.inverse() умножением на обратную матрицу, так как она определена через LinearAlgebra.solve_linear_equations():
Листинг
def inverse(a):
return solve_linear_equations(a, Numeric.identity(a.shape[0]))
Функция LinearAlgebra.eigenvalues() находит собственные значения матрицы, а LinearAlgebra.eigenvectors() - пару: собственные значения, собственные вектора:
Листинг
>>> from Numeric import array, dot
>>> from LinearAlgebra import eigenvalues, eigenvectors
>>> a = array([[-5, 2], [2, — 7]])
>>> lmd = eigenvalues(a)
>>> print «Собственные значения:", lmd
Собственные значения: [-3.76393202–8.23606798]
>>> (lmd, v) = eigenvectors(a)
>>> print «Собственные вектора:"
Собственные вектора:
>>> print v
[[ 0.85065081 0.52573111]
[-0.52573111 0.85065081]]
>>> print «Проверка:", dot(a, v[0]) - v[0] * lmd[0]
Проверка: [ -4.44089210e–16 2.22044605e–16]
Проверка показывает, что тождество выполняется с достаточно большой точностью (числа совсем маленькие, практически нули): собственные числа и векторы найдены верно.
Модуль RandomArray
В этом модуле собраны функции для генерации массивов случайных чисел различных распределений и свойств. Их можно применять для математического моделирования.
Функция RandomArray.random() создает массивы из псевдослучайных чисел, равномерно распределенных в интервале (0, 1):
Листинг
>>> import RandomArray
>>> print RandomArray.random(10) # массив из 10 псевдослучайных чисел
[ 0.28374212 0.19260929 0.07045474 0.30547682 0.10842083 0.14049676
0.01347435 0.37043894 0.47362471 0.37673479]
>>> print RandomArray.random([3,3]) # массив 3x3 из псевдослучайных чисел
[[ 0.53493741 0.44636754 0.20466961]
[ 0.8911635 0.03570878 0.00965272]
[ 0.78490953 0.20674807 0.23657821]]
Функция RandomArray.randint() для получения массива равномерно распределенных чисел из заданного интервала и заданной формы:
Листинг
>>> print RandomArray.randint(1, 10, [10])
[8 1 9 9 7 5 2 5 3 2]
>>> print RandomArray.randint(1, 10, [10])
[2 2 5 5 7 7 3 4 3 7]
Можно получать и случайные перестановки с помощью RandomArray.permutation():
Листинг
>>> print RandomArray.permutation(6)
[4 0 1 3 2 5]
>>> print RandomArray.permutation(6)
[1 2 0 3 5 4]
Доступны и другие распределения для получения массива нормально распределенных величин с заданным средним и стандартным отклонением:
Листинг
>>> print RandomArray.normal(0, 1, 30)
[-1.0944078 1.24862444 0.20415567–0.74283403 0.72461408–0.57834256
0.30957144 0.8682853 1.10942173–0.39661118 1.33383882 1.54818618
0.18814971 0.89728773–0.86146659 0.0184834 -1.46222591–0.78427434
1.09295738–1.09731364 1.34913492–0.75001568–0.11239344 2.73692131
— 0.19881676–0.49245331 1.54091263–1.81212211 0.46522358–0.08338884]
Следующая таблица приводит функции для других распределений:
Функция и ее аргументы Описание
F(dfn, dfd, shape=[]) F–распределение
beta(a, b, shape=[]) Бета–распределение
binomial(trials, p, shape=[]) Биномиальное распределение
chi_square(df, shape=[]) Распределение хи–квадрат
exponential(mean, shape=[]) Экспоненциальное распределение
gamma(a, r, shape=[]) Гамма–распределение
multivariate_normal(mean, cov, shape=[]) Многомерное нормальное распределение
negative_binomial(trials, p, shape=[]) Негативное биномиальное
noncentral_F(dfn, dfd, nconc, shape=[]) Нецентральное F–распределение
noncentral_chi_square(df, nconc, shape=[]) Нецентральное хи–квадрат распределение
normal(mean, std, shape=[]) Нормальное распределение
permutation(n) Случайная перестановка
poisson(mean, shape=[]) Пуассоновское распределение
randint(min, max=None, shape=[]) Случайное целое
random(shape=[]) Равномерное распределение на интервале (0, 1)
random_integers(max, min=1, shape=[]) Случайное целое
standard_normal(shape=[]) Стандартное нормальное распределение
uniform(min, max, shape=[]) Равномерное распределение
Заключение
В этой лекции рассматривался набор модулей для численных вычислений. Модуль Numeric определяет тип многомерный массив и множество функций для работы с массивами. Также были представлены модули для линейной алгебры и моделирования последовательностей случайных чисел различных распределений.
6. Лекция: Обработка текстов. Регулярные выражения. Unicode.
В этой лекции дается краткое представление о возможностях языка Python по обработке текстовой информации. Рассмотрены синтаксис и семантика регулярных выражений, а также некоторые вопросы использования Unicode.
Под обработкой текстов понимается анализ, преобразование, поиск, порождение текстовой информации. По большей части работа с естественными текстами не будет глубже, чем это возможно без систем искусственного интеллекта. Кроме того, здесь предполагается опустить рассмотрение обработки текстов посредством текстовых процессоров и редакторов, хотя некоторые из них (например, Cooledit) предоставляют возможность писать макрокоманды на Python.
Следует отметить, что для Python созданы также модули для работы с естественными языками, а также для лингвистических исследований. Хорошим учебным примером может служить nltk (the Natural Language Toolkit).
Стоит отметить проект PyParsing (сайт:http://pyparsing.sourceforge.net), с помощью которого можно организовать обработку текста по заданной грамматике.
Строки
Строки в языке Python являются типом данных, специально предназначенным для обработки текстовой информации. Строка может содержать произвольно длинный текст (ограниченный имеющейся памятью).
В новых версиях Python имеются два типа строк: обычные строки (последовательность байтов) и Unicode–строки (последовательность символов). В Unicode–строке каждый символ может занимать в памяти 2 или 4 байта, в зависимости от настроек периода компиляции. Четырехбайтовые знаки используются в основном для восточных языков.
Примечание:
В языке и стандартной библиотеке за некоторыми исключениями строки и Unicode–строки взаимозаменяемы, в собственных приложениях для совместимости с обоими видами строк следует избегать проверок на тип. Если это необходимо, можно проверять принадлежность базовому (для строк и Unicode–строк) типу с помощью isinstance(s, basestring).
При использовании Unicode–строк, следует мысленно принять точку зрения, относительно которой именно Unicode–представление является главным, а все остальные кодировки — лишь частные случаи представления текста, которые не могут передать всех символов. Без такой установки будет непонятно, почему преобразование из восьмибитной кодировки называется decode (декодирование). Для внешнего представления можно с успехом использовать кодировку UTF–8, хотя, конечно, это зависит от решаемых задач.
Кодировка Python–программы
Для того чтобы Unicode–литералы в Python–программе воспринимались интерпретатором правильно, необходимо указать кодировку в начале программы, записав в первой или второй строке примерно следующее (для Unix/Linux):
Читать дальшеИнтервал:
Закладка: