Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
питон ТП6 / Питон.docx
Скачиваний:
24
Добавлен:
18.08.2022
Размер:
13.07 Mб
Скачать

Метаклассы

Метаклассы – это классы, экземпляры которых являются классами. Давайте поговорим о специфике языка Python и его функционале.

Чтобы создать свой собственный метакласс в Python, нужно воспользоваться подклассом type, стандартным метаклассом в Python. Чаще всего метаклассы используются в роли виртуального конструктора. Чтобы создать экземпляр класса, нужно сначала вызвать этот самый класс. Точно так же делает и Python: для создания нового класса вызывает метакласс. Метаклассы определяются с помощью базовых классов в атрибуте __metaclass__. При создании класса допускается использование методов __init__ и __new__. С их помощью можно пользоваться дополнительными функциями. Во время выполнения оператора class генерируется пространство имен, которое будет содержать атрибуты будущего класса. Затем, для непосредственного создания, вызывается метакласс с именем и атрибутами.

При написании класса можно добавить атрибут __metaclass__:

class Foo(object):

__metaclass__ = something...

[...]

Если это сделать, то для создания класса Foo Python будет использовать метакласс.

Модуль Numpy. Типы данных, создание массивов, преобразование, нахождение статистик в массивах, операции для работы с массивами

Главный объект NumPy - это однородный многомерный массив. Чаще всего это одномерная последовательность или двумерная таблица, заполненные элементами одного типа, как правило числами, которые проиндексированы кортежем положительных целых чисел. В NumPy, элементы этого кортежа называются осями, а число осей рангом.

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

a = np.array([11, 22, 33, 44, 55, 66, 77, 88, 99])

a = np.arange(12)

np.random.randint(0, 15, size = (4, 6))

Типы данных:

В NumPy существует 5 базовых числовых типов: булевы числа (тип bool: 0 - ложь и 1 - истина), целые числа (тип int), беззнаковые целые числа (тип uint), вещественные числа (числа с плавающей запятой, тип float) и комплексные числа (тип complex). У некоторых после указания типа следует количество бит необходимое для хранения такого числа в памяти (16, 32, 64 или 128), но некоторые, такие как int_ или intp зависят от используемой платформы (32 или 64-разрядные машины).

В NumPy доступны следующие типы данных:

bool_

Логический тип (истина или ложь), хранящийся в виде байта.

int_

Целочисленный тип установленный по умолчанию (такой же, как C long, как правило это либо int64 либо int32).

intc

Идентичен C int (int32 или int64).

intp

Целочисленный тип, используемый для индексирования (такой же, как C ssize_t, как правило это либо int64 либо int32).

int8

Целые числа в диапазоне от -128 по 127 (числа размером 1 байт).

int16

Целые числа в диапазоне от -32768 по 32767, (числа размером 2 байта).

int32

Целые числа в диапазоне от -2147483648 по 2147483647, (числа размером 4 байта).

int64

Целые числа в диапазоне от -9223372036854775808 по 9223372036854775807, (числа размером 8 байт).

uint8

Целые числа в диапазоне от 0 по 255 (числа размером 1 байт).

uint16

Целые числа в диапазоне от 0 по 65535 (числа размером 2 байта).

uint32

Целые числа в диапазоне от 0 по 4294967295 (числа размером 4 байта).

uint64

Целые числа в диапазоне от 0 по 18446744073709551615 (числа размером 8 байт).

float_

То же самое что и float64.

float16

Вещественные числа половинной точности: 1 бит знака, 5 бит экспоненты, 10 бит мантисы (числа размером 2 байта).

float32

Вещественные числа одинарной точности: 1 бит знака, 8 бит экспоненты, 23 бита мантисы (числа размером 4 байта).

float64

Вещественные числа двойной точности: 1 бит знака, 11 бит экспоненты, 52 бита мантисы (числа размером 8 байт).

complex_

То же самое что и complex128.

complex64

Комплексные числа в которых действительная и мнимая части представлены двумя вещественными числами типа float32.

complex128

Комплексные числа в которых действительная и мнимая части представлены двумя вещественными числами типа float64.

Нахождение статистик:

Методы:

. Операции между несколькими массивами сначала

проверяются на совпадения размерности.

2. Математические операции применяются поэлементно.

3. Редуцирующие (векторизированные) операторы применяются

ко всему массиву до тех пор, пока ось (axis) не указана.

4. Пропущенные значение (np.nan) распространяются, пока явно

не указано правило игнорирования (nanmean, nansum).

аргмин – место минимума, не значение

n, m = np.unravel_index(np.argmax(arr[:,3:]), arr[:,3:].shape)#переводим такое (.) обрщение в индекс для каждой ячейки

Соседние файлы в папке питон ТП6