-->

Язык программирования Python

На нашем литературном портале можно бесплатно читать книгу Язык программирования Python, Сузи Роман Арвиевич-- . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Язык программирования Python
Название: Язык программирования Python
Дата добавления: 16 январь 2020
Количество просмотров: 495
Читать онлайн

Язык программирования Python читать книгу онлайн

Язык программирования Python - читать бесплатно онлайн , автор Сузи Роман Арвиевич

Курс посвящен одному из бурно развивающихся и популярных в настоящее время сценарных языков программирования — Python. Язык Python позволяет быстро создавать как прототипы программных систем, так и сами программные системы, помогает в интеграции программного обеспечения для решения производственных задач. Python имеет богатую стандартную библиотеку и большое количество модулей расширения практически для всех нужд отрасли информационных технологий. Благодаря ясному синтаксису изучение языка не составляет большой проблемы. Написанные на нем программы получаются структурированными по форме, и в них легко проследить логику работы. На примере языка Python рассматриваются такие важные понятия как: объектно–ориентированное программирование, функциональное программирование, событийно–управляемые программы (GUI–приложения), форматы представления данных (Unicode, XML и т.п.). Возможность диалогового режима работы интерпретатора Python позволяет существенно сократить время изучения самого языка и перейти к решению задач в соответствующих предметных областях. Python свободно доступен для многих платформ, а написанные на нем программы обычно переносимы между платформами без изменений. Это обстоятельство позволяет применять для изучения языка любую имеющуюся аппаратную платформу.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

1 ... 19 20 21 22 23 24 25 26 27 ... 62 ВПЕРЕД
Перейти на страницу:

Количество размерностей и длина массива по каждой оси называются формой массива (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 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) Экспонента (ex)

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 и применяются к массивам поэлементно. Эти функции имеют специальные методы:

accumulate() Аккумулирование результата.

outer() Внешнее «произведение».

reduce() Сокращение.

reduceat() Сокращение в заданных точках.

Пример с функцией add() позволяет понять смысл универсальной функции и ее методов:

Листинг

>>> from Numeric import add

>>> add([[1, 2], [3, 4]], [[1, 0], [0, 1]])

array([[2, 2],

[3, 5]])

>>> add([[1, 2], [3, 4]], [1, 0])

array([[2, 2],

[4, 4]])

>>> add([[1, 2], [3, 4]], 1)

array([[2, 3],

[4, 5]])

>>> add.reduce([1, 2, 3, 4]) # т.е. 1+2+3+4

10

>>> add.reduce([[1, 2], [3, 4]], 0) # т.е. [1+3 2+4]

array([4, 6])

1 ... 19 20 21 22 23 24 25 26 27 ... 62 ВПЕРЕД
Перейти на страницу:
Комментариев (0)
название