- •Инструментальные средства разработки инфокоммуникационных систем с искусственным интеллектом
- •ОГЛАВЛЕНИЕ
- •Введение в инструментальные средства разработки ИКС с ИИ
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
- •Пример:
- •Кодировка символов
- •в верху файла.
- •IPython notebooks
- •Модули
- •Looking at what a module contains, and its documentation (Глядя на то, что содержит модуль, и его документацию)
- •Переменные и типы Имена символов
- •Присваивание
- •Основные типы
- •Функциональная утилита Type
- •Вывод type
- •Операторы и сравнения
- •Составные типы: строки, список и словари. Текстовые переменные
- •Индексация начинается с 0!
- •Лист
- •Кортежи
- •Словари
- •Услоаные операторы и табуляция Условные операторы: if, elif, else
- •else:
- •Циклы
- •Списки: создание списков с использованием циклов for:
- •while циклы:
- •Функции
- •Аргумент по умолчанию и ключевые слова
- •Безымянные функции (lambda функция)
- •Классы
- •Исключения
- •Дополнительная литература
- •Часть 2. Введение в pandas Цели обучения:
- •Основные понятия
- •Работа с колонками и строками DataFrame
- •Манипулирование данными
- •Решение
- •Indexes
- •Упражнение #2
- •Копирование DataFrame
- •Введение в анализ данных (очистка, интерполяция, экстраполяция)
- •Формирование дата фрейма и интерполяция пропущенны значений
- •Графическое представление обработанного дата фрейма (библ. pyplot)
- •Анализ графика и удаление значений за неполный день
- •Обработка аномалий временного хода и апроксимация Детектирование аномалий
- •Интерполяция
- •Визуализация аномалий
- •Сглаживание временного ряда
- •Анализ временных рядов (регрессия)
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
- •Базовые методы программирования систем ИИ
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ:
- •ПРАКТИЧЕСКАЯ ЧАСТЬ.
- •Кластерный анализ
- •Применение нейронных сетей для анализа временных рядов
- •Когнитивные системы связи
'WrapperDescriptorType', '_GeneratorWrapper', '__all ', ' builtins ', ' cached ', ' doc ',
' file ', ' loader ', ' name ', ' package ', ' spec ', '_calculate_meta', 'coroutine', 'new_class', 'prepare_class', 'resolve_bases']
x = 1.0
# проверить, является ли переменная x числом с плавающей запятой |
|
|
|||||
type(x) is float |
|
|
|
|
|
|
|
True |
|
|
|
|
|
|
|
# |
проверить, |
является |
ли |
переменная |
x |
целым |
числом |
type(x) is int False
Мы также можем использовать метод isinstance для проверки типов переменных: isinstance(x, float)
True
Вывод type x = 1.5
print(x, type(x)) 1.5 <class 'float'> x = int(x)
print(x, type(x)) 1 <class 'int'>
z = complex(x)
print(z, type(z))
(1+0j) <class 'complex'> x = float(z)
TypeError Traceback (most recent call last) <ipython-input-34-19c840f40bd8> in <module>
----> 1 x = float(z)
TypeError: can't convert complex to float
Сложные переменные не могут быть приведены к числам с плавающей запятой или целым числам. Нам нужно использовать z.real или z.imag, чтобы извлечь часть комплексного числа, которую мы хотим:
y = bool(z.real)
print(z.real, " -> ", y, type(y))
y = bool(z.imag)
print(z.imag, " -> ", y, type(y))
1.0-> True <class 'bool'>
0.0-> False <class 'bool'>
Операторы и сравнения
Большинство операторов и сравнений в Python работают так, как и следовало ожидать:
• Арифметические операторы +, -, *, /, // (целочисленное деление), '**' степень
1 + 2, 1 - 2, 1 * 2, 1 / 2 (3, -1, 2, 0.5)
9
1.0 + 2.0, 1.0 - 2.0, 1.0 * 2.0, 1.0 / 2.0 |
|
|
|
|
||
(3.0, -1.0, 2.0, 0.5) |
|
|
|
|
|
|
# |
Целочисленное |
деление |
чисел |
с |
плавающей |
запятой |
3.0 // 2.0 |
|
|
|
|
|
|
1.0 |
|
|
|
|
|
|
# |
Примечание! Оператор возведения в |
степень |
в python не |
^, а ** |
||
2 ** 2 |
|
|
|
|
|
|
4 |
|
|
|
|
|
|
Примечание. В Python 3.x оператор / всегда выполняет деление с плавающей запятой,что неверно в Python 2.x, где результатом / всегда является целое число, если операнды являются целыми числами. Если быть более точным, 1/2 = 0.5 (float) в Python 3.x и 1/2 = 0 (int) в Python 2.x (но 1.0/2 = 0.5 в Python 2.x).
•Логические операторы записываются как слова: and, not, or.
True and False False
not False True
True or False True
•Операторы сравнения >, <, >= (больше или равно), <= (меньше или равно), == равенство, is идентичности.
2 > 1, 2 < 1 (True, False) 2 > 2, 2 < 2 (False, False) 2 >= 2, 2 <= 2
(True, True)
# equality
[1,2] == [1,2] True
# objects identical? l1 = l2 = [1,2]
l1 is l2 True
Составные типы: строки, список и словари. Текстовые переменные
String(str) - тип переменной, который используется для хранения текстовых сообщений.
s = "Hello world" type(s)
str
#длина строки: количество символов len(s)
11
#заменить подстроку в строке
s2 = s.replace("world", "test") print(s2)
Hello test
Мы можем индексировать символ в строке, используя []: s[0]
{"type":"string"}
10
Индексация начинается с 0!
Мы можем извлечь часть строки, используя синтаксис [start:stop], который извлекает символы между индексами start и stop -1 (символ в индексе stop не включается):
s[0:5] {"type":"string"} s[4:5] {"type":"string"}
Если мы опустим один (или оба) start или stop из [start:stop], то пустое место по умолчанию будет обозначать начало и конец строки соответственно:
s[:5] {"type":"string"} s[6:] {"type":"string"} s[:] {"type":"string"}
Мы также можем определить размер шага, используя синтаксис [start:end:step] (значение по умолчанию для step равно 1, как мы видели выше):
s[::1] {"type":"string"} s[::2] {"type":"string"}
Эта техника называется нарезка (slicing). Подробнее о синтаксисе читайте здесь: http://docs.python.org/release/2.7.3/library/functions.html?highlight=slice#slice
Python имеет очень богатый набор функций для обработки текста. См. например http://docs.python.org/2/library/string.html
Примеры форматирования строк (текста)
print("str1", "str2", "str3") # Оператор печати объединяет строки с пробелом str1 str2 str3
print("str1", 1.0, False, -1j) # Операторы печати преобразуют все аргументы в строки.
str1 1.0 False (-0-1j)
print("str1" + "str2" + "str3") # строки, добавленные с помощью +, объединяются без пробела
str1str2str3
print("value = %f" % 1.0) # мы можем использовать форматирование строк в стиле C
value = 1.000000
# это форматирование создает строку
s2 = "value1 = %.2f. value2 = %d" % (3.1415, 1.5)
print(s2)
value1 = 3.14. value2 = 1
# альтернативный, более интуитивно понятный способ форматирования строки s3 = 'value1 = {0}, value2 = {1}'.format(3.1415, 1.5)
print(s3)
value1 = 3.1415, value2 = 1.5
Лист
Списки очень похожи на строки, за исключением того, что каждый элемент может быть любого типа.
Синтаксис создания списков в Python: [...]:
11
l = [1,2,3,4]
print(type(l))
print(l) <class 'list'> [1, 2, 3, 4]
Мы можем использовать те же методы нарезки для управления списками, что и для строк:
print(l)
print(l[1:3])
print(l[::2]) [1, 2, 3, 4] [2, 3] [1, 3]
Индексация начинается с 0!
l[0] 1
Элементы в списке не обязательно должны быть одного типа: l = [1, 'a', 1.0, 1-1j]
print(l)
[1, 'a', 1.0, (1-1j)]
Списки Python могут быть неоднородными и произвольно вложенными: nested_list = [1, [2, [3, [4, [5]]]]]
nested_list
[1, [2, [3, [4, [5]]]]]
Списки играют очень важную роль в Python. Например, они используются в циклах и других структурах управления потоком (обсуждается ниже). Есть ряд удобных функций для формирования списков разного типа, например функция range:
start = 10 stop = 30 step = 2
range(start, stop, step) range(10, 30, 2)
#В python 3 'range' генерирует итератор, котороый может быть преобразован в лист оператором 'list(...)'.
#Но не работает в python 2
list(range(start, stop, step))
[10, 12, 14, 16, 18, 20, 22, 24, 26, 28] list(range(-10, 10))
[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] s
{"type":"string"}
# преобразовать строку в список: s2 = list(s)
s2
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
12
# сортировка s2.sort()
print(s2)
[' ', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
Добавление, вставка, изменение и удаление элементов из списков
#создание нового пустого листа l = []
#добавление жлеиента в лист используя `append` l.append("A")
l.append("d") l.append("d")
print(l) ['A', 'd', 'd']
Мы можем изменять списки, присваивая новые значения элементам в списке. На техническом жаргоне - списки изменяемы (mutable).
l[1] = "p" l[2] = "p"
print(l) ['A', 'p', 'p']
l[1:3] = ["d", "d"]
print(l) ['A', 'd', 'd']
Добавление элемента по определенному индексу, используя insert l.insert(0, "i")
l.insert(1, "n") l.insert(2, "s") l.insert(3, "e") l.insert(4, "r") l.insert(5, "t")
print(l)
['i', 'n', 's', 'e', 'r', 't', 'A', 'd', 'd']
Удалить первый элемент с определенным значением, используя remove l.remove("A")
print(l)
['i', 'n', 's', 'e', 'r', 't', 'd', 'd']
Удалить элемент в определенном месте, используя del: del l[7]
del l[6]
print(l)
['i', 'n', 's', 'e', 'r', 't']
Используйте help(list) для получения более подробной информации или прочтите онлайн-документацию
13