Роман Сузи - Язык программирования Python
- Название:Язык программирования Python
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Роман Сузи - Язык программирования Python краткое содержание
Курс посвящен одному из бурно развивающихся и популярных в настоящее время сценарных языков программирования — Python. Язык Python позволяет быстро создавать как прототипы программных систем, так и сами программные системы, помогает в интеграции программного обеспечения для решения производственных задач. Python имеет богатую стандартную библиотеку и большое количество модулей расширения практически для всех нужд отрасли информационных технологий. Благодаря ясному синтаксису изучение языка не составляет большой проблемы. Написанные на нем программы получаются структурированными по форме, и в них легко проследить логику работы. На примере языка Python рассматриваются такие важные понятия как: объектно–ориентированное программирование, функциональное программирование, событийно–управляемые программы (GUI–приложения), форматы представления данных (Unicode, XML и т.п.). Возможность диалогового режима работы интерпретатора Python позволяет существенно сократить время изучения самого языка и перейти к решению задач в соответствующих предметных областях. Python свободно доступен для многих платформ, а написанные на нем программы обычно переносимы между платформами без изменений. Это обстоятельство позволяет применять для изучения языка любую имеющуюся аппаратную платформу.
Язык программирования Python - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
>>> 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 a
[[0 1 2]
[3 4 5]
[6 7 8]]
Массив можно превратить обратно в список с помощью метода tolist()
:
>>> a.tolist()
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
Срезы
Объекты–массивы Numeric
используют расширенный синтаксис выделения среза. Следующие примеры иллюстрируют различные варианты записи срезов. Функция Numeric.arrayrange()
является аналогом range()
для массивов.
>>> import Numeric
>>> a = Numeric.arrayrange(24) + 1
>>> a.shape = (4, 6)
>>> print a # исходный массив
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]
[13 14 15 16 17 18]
[19 20 21 22 23 24]]
>>> print a[1,2] # элемент 1,2
9
>>> print a[1,:] # строка 1
[ 7 8 9 10 11 12]
>>> print a[1] # тоже строка 1
[ 7 8 9 10 11 12]
>>> print a[:,1] # столбец 1
[ 2 8 14 20]
>>> print a[-2,:] # предпоследняя строка
[13 14 15 16 17 18]
>>> print a[0:2,1:3] # окно 2x2
[[2 3]
[8 9]]
>>> print a[1,::3] # каждый третий элемент строки 1
[ 7 10]
>>> print a[:,:: -1] # элементы строк в обратном порядке
[[ 6 5 4 3 2 1]
[12 11 10 9 8 7]
[18 17 16 15 14 13]
[24 23 22 21 20 19]]
Срез не копирует массив (как это имеет место со списками), а дает доступ к некоторой части массива. Далее в примере меняется на 0 каждый третий элемент строки 1:
>>> a[1,::3] = Numeric.array([0,0])
>>> print a
[[ 1 2 3 4 5 6]
[ 0 8 9 0 11 12]
[13 14 15 16 17 18]
[19 20 21 22 23 24]]
В следующих примерах находит применение достаточно редкая синтаксическая конструкция: срез с многоточием ( Ellipsis
). Многоточие ставится для указания произвольного числа пропущенных размерностей ( :
, :
, ...
, :
):
>>> import Numeric
>>> a = Numeric.arrayrange(24) + 1
>>> a.shape = (2,2,2,3)
>>> print a
[[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
[[[13 14 15]
[16 17 18]]
[[19 20 21]
[22 23 24]]]]
>>> print a[0,...] # 0–й блок
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
>>> print a[0,:,:,0] # срез по первой и последней размерностям
[[ 1 4]
[ 7 10]]
>>> print a[0,...,0] # то же, но с использованием многоточия
[[ 1 4]
[ 7 10]]
Универсальные функции
Модуль Numeric
определяет набор функций для применения к элементам массива. Функции применимы не только к массивам, но и к последовательностям (к сожалению, итераторы пока не поддерживаются). В результате получаются массивы.
Функция | Описание |
---|---|
add(x, y) , subtract(x, y) |
Сложение и вычитание |
multiply(x, y) , divide(x, y) |
Умножение и деление |
remainder(x, y) , fmod(x, y) |
Получение остатка от деления (для целых чисел и чисел с плавающей запятой) |
power(x) |
Возведение в степень |
sqrt(x) |
Извлечение корня квадратного |
negative(x) , absolute(x) , fabs(x) |
Смена знака и абсолютное значение |
ceil(x) , floor(x) |
Наименьшее (наибольшее) целое, большее (меньшее) или равное аргументу |
hypot(x, y) |
Длина гипотенузы (даны длины двух катетов) |
sin(x) , cos(x) , tan(x) |
Тригонометрические функции |
arcsin(x) , arccos(x) , arctan(x) |
Обратные тригонометрические функции |
arctan2(x, y) |
Арктангенс от частного аргумента |
sinh(x) , cosh(x) , tanh(x) |
Гиперболические функции |
arcsinh(x) , arccosh(x) , arctanh(x) |
Обратные гиперболические функции |
exp(x) |
Экспонента (e x) |
log(x) , log10(x) |
Натуральный и десятичный логарифмы |
maximum(x, y) , minimum(x, y) |
Максимум и минимум |
conjugate(x) |
Сопряжение (для комплексных чисел) |
equal(x, y) , not_equal(x, y) |
Равно, не равно |
greater(x, y) , greater_equal(x, y) |
Больше, больше или равно |
less(x, y) , less_equal(x, y) |
Меньше, меньше или равно |
logical_and(x, y) , logical_or(x, y) |
Логические И, ИЛИ |
logical_xor(x, y) |
Логическое исключающее ИЛИ |
logical_not(x) |
Логические НЕ |
bitwise_and(x, y) , bitwise_or(x, y) |
Побитовые И, ИЛИ |
bitwise_xor(x, y) |
Побитовое исключающее ИЛИ |
invert(x) |
Побитовая инверсия |
left_shift(x, n) , right_shift(x, n) |
Побитовые сдвиги влево и вправо на n битов |
Перечисленные функции являются объектами типа ufunc
и применяются к массивам поэлементно. Эти функции имеют специальные методы:
Интервал:
Закладка: