Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab8 / Лекция 8. Объектно-ориентированный подход к разработке кода на Python.pdf
Скачиваний:
1
Добавлен:
30.05.2025
Размер:
1.79 Mб
Скачать

НАСТРОЙКА ЧЕРЕЗ НАСЛЕДОВАНИЕ

Настройкафункциональностичерезнаследование – модификацияметодов: class CheckingAccount(BankAccount):

def __init__(self, balance, limit): BankAccount.__init__(self, balance) self.limit = limit

def deposit(self, amount): self.balance += amount

def withdraw(self, amount, fee=0): if fee <= self.limit:

BankAccount.withdraw(self, amount + fee) else:

BankAccount.withdraw(self, amount + self.limit)

>>>check_acct = CheckingAccount(1000, 25)

>>>check_acct.withdraw(200)

>>>check_acct.withdraw(200, fee=15)

>>>bank_acct = BankAccount(1000)

>>>bank_acct.withdraw(200)

>>>bank_acct.withdraw(200, fee=15) TypeError: withdraw() got an unexpected keyword argument ’fee’

10

БИБЛИОТЕКА NumPy

Библиотека NumPy – одинизбазовыхпакетовдлянаучныхвычислений:

Мощные N-размерныемассивы

Интероперабельность

Инструментыдляоперацийсчислами

Быстродействие (оптимизированный C код)

Открытость

Простота использования

Простой примеррешаемыхзадач:

>>>height = [1.7, 1.65, 1.75, 1.82, 1.8]

>>>weight = [65, 58.2, 75, 88.5, 89]

>>>weight / height ** 2

TypeError: unsupported operand type(s) for ** or pow(): ’list’ and ’int’

Применяем NumPy (Numeric Python):

>>>import numpy as np

>>>np_height = np.array(height) => array([1.7, 1.65, 1.75, 1.82, 1.8])

>>>np_weight = np.array(weight) => array([65, 58.2, 75, 88.5, 89])

>>>bmi = np_weight / np_height ** 2

>>>bmi

11 array([22.49134948 21.37741047 24.48979592 26.71778771 27.4691358])

NumPy: СОЗДАНИЕ МАССИВОВ

Подключениебиблиотеки NumPy:

>>>import numpy as np

Инициализациямассива:

>>>a = np.array([1, 2, 3])

Доступкэлементаммассива:

>>>a[0] = -7

Выводмассива:

>>>print(a)

[-7 2 3]

Созданиепустогомассива:

>>>a = np.array([])

>>>print(a)

[]

Созданиемассивасуказаниемэлементов:

>>>a = np.array([1, 2, 3, 4, 5])

>>>a = np.array((1, 2, 3, 4, 5))

Созданиенеинициализированного массива:

>>>a = np.empty(5)

>>>print(a)

12[nan 0. 0. 0. 0.]

Указаниетипаэлементовмассиваприсоздании:

>>>a = np.array([1, 2, 3, 4, 5], dtype=complex)

>>>print(a)

[1.+0.j 2.+0.j 3.+0.j 4.+0.j 5.+0.j]

Созданиемассиваподиапазону:

>>>a = np.arange(0, 10, 1)

>>>a = np.arange(0, 1, 0.1)

>>>print(a)

[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

Созданиемассиваподиапазонуичислуразбиений:

>>>a = np.linspace(0, 2, 6)

>>>print(a)

[0. 0.4 0.8 1.2 1.6 2. ]

NumPy: МАНИПУЛИРОВАНИЕ МАССИВАМИ

Добавлениеэлементоввмассив:

>>>a = np.array([])

[]

>>>a = np.append(a, -100) [-100.]

>>>a = np.append(a, [1, 2, 3, 4]) [-100. 1. 2. 3. 4.]

Вставкаэлементоввмассив:

>>>a = np.insert(a, 1, -8) [-100. -8. 1. 2. 3. 4.]

>>>b = np.array([-1, -2, -3])

>>>a = np.insert(a, 3, b)

[-100. -8. 1. -1. -2. -3. 2. 3. 4.]

Удалениеэлементовизмассива:

>>> a = np.delete(a, 1)

[-100. 1. -1. -2. -3. 2. 3. 4.]

>>> a = np.delete(a, [1, 3, 4]) [-100. -1. 2. 3. 4.]

13

Созданиематрицы:

>>>a = np.array([ [0, 1, 2], [3, 4, 5] ])

>>>a = np.array([ (0, 1, 2), (3, 4, 5) ])

>>>a = np.arange(6).reshape(2, 3)

[[0 1 2] [3 4 5]]

Создание изаполнениематрицынулями:

>>> a = np.zeros( (3, 4) ) [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]

Создание изаполнениематрицыединицами:

>>> a = np.ones( (3, 4) ) [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]

Созданиематрицысединицамиподиагонали, остальные 0:

>>> a = np.eye(3) [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]