Please enable JavaScript.
Coggle requires JavaScript to display documents.
3.4-1,2 Numpy - Coggle Diagram
3.4-1,2 Numpy
Numpy
Поддержка векторизованных вычислений в Python
написана на C, Fotran
Крайне высокая производительность
Scipy
- расширение Numpy для сложных вычислений
Базовый класс - многомерный массив
ndarray
Содержит только элементы одного типа
Не позволяет добавлять или удалять элементы в произвольном месте
Создание массивов
Создание предзаполненных массивов
np.arange(
[start, ]
stop
, [step, ]dtype=None
)
- создает линейный массив последовательных элементов от start до
stop-1
( /начальноеЗначение/, конечноеЗначение, /шаг/, /
endpoint
True/False)
endpoint
- включать или нет конечное значение
np.zeros(
длина1, длина2, .. длинаN
)
- нули
np.ones(
длина1, длина2, .. длинаN
)
- единицы
np.ones_like
np.eye(
длина
*)
- двумерная единичная диагональная матрица
(.., like =
другойМассив )
- подгонка под заданный размер
np.empty(
длина1, длина2, .. длинаN
)
- без значений
np.linspace(
старт, стоп, количество
)
- создает линейный массив из
количество
последовательных элементов от
старт
до
стоп
np.random
(
== np.sample == np.ranf == np.random_sample
) - заполнение случайными
https://pythonworld.ru/numpy/3.html
:recycle:
np.random.seed( .. )
- установка счетчика случайных чисел
np.random.randint (
/мин/,
макс
, /размерность/
)
- возврат случайного целого числа из диапазона (или возврат их массива)
np.random.sample
(
размерность
) - возврат случайного числа или массива
Прямой ввод числовых значений
np.array([[[..[ .. , .. ] , [ .. , .. ] .. ]]])
Списки по каждой из осей должны иметь одинаковую длину
Создание из списка:
имяМассива
= np.array(
список
)
свойства
массив
.shape
- размерность массива (возвращает кортеж из 1 ..
n
элементов, равных длине в каждом из измерений
массив
.dtype
- тип элемента массива
может быть явно указано при вызове функции
array
как именованный аргумент
типы в
numpy
числовые
целые
со знаком
int8
-
int64
без знака
uint8
-
uint64
с плавающей точкой
float16 - float64
комплексные
complex64, complex128
логические
np.bool
строки
простые символы
np.string_
юникод
np.unicode_
объекты
np.object
.dtype.itemsize
- размер одного элемента в байтах
массив
.ndim
- количество измерений массива
эквивалентно
len(
массив
.shape)
.T
- транспонирование
без копирования данных
.
size
- общее количество элементов
.nbytes
общий объем массива в байтах
.strides
- размер смещения в байтах при переходе к следующему подмножеству (для верхних размерностей) или к следующему элементу (для последней)
индексация
True-NP:
Явная
(по индексам)
массив
[
индекс1, индекс2, .. индексN
]
Индексация диапазоном
Если вместо индекса написать
:
(пустой диапазон), будут выданы все элементы этого измерения
Пример: для 2д
столбец =
массив
[ : ,
индексСтолбца
]
1 more item...
строка =
массив
[
индексСтроки
, : ]
1 more item...
начало : конец : шаг
: : шаг
- все элементы с некоторым шагом
отрицательный шаг = обратная индексация
отступ : : шаг
- все элементы с некоторым шагом, с отступом
: конец
- первые (конец-1) элементы
При индексации в массиве большой размерности символ
...
означает некоторое количество идущих подряд
:
либо все от начала, либо все до конца
Индексация может быть применена несколько раз подряд
массив
[индексацияВИсходномМассиве] [индексацияВВыборке]..
Нумерация от сложного к простому (ИндексN - столбец, N-1 - строка, N-2 - таблица)
По списку индексов
(fancy indexing) : кроме каждого конкретного индекса можно использовать список из нескольких значений
[ .., .., ..]
Отрицательный индекс = счет с конца (
-1
- последний)
срез массива
имяМассива
[ start=
индексСтарта
: stop=
индексКонца
: step=
шаг
]
возможен обратный перебор если
start
=-1 или
start
>
stop
и
step
<0
stop-1
имяМассива
[ slice (
индексСтарта, индексКонца, шаг
)]
булева маска
Элементы включаются, если значение соответствующего поля маски
True
сама маска - нп.массив типа bool
вызов среза:
массивЗначений [ маска ]
булева индексация
элементы включаются, если значение выражения для них
True
вызов среза:
массивЗначений [ логВыражение для массивЗначений ]
a [ a<0 ]
на самом деле такой вызов генерирует под капотом булеву маску
явная генерация маски для дальнейшего использования:
маска = логическоеВыражение для МассиваЗначений
Для использовании нескольких масок в одном логическом выражении нужно использовать специальные логические операторы
np.logical...
|
np.where(
mask
)
- поиск индексов по маске
маска должна быть сгенерирована
массив
[np.where(
логическоеВыражение
)]
- генерация среза по набору индексов, генерируемому здесь же логическим выражением
Py-style
:
массив [индекс1] [индекс2] .. [индексN]
При таком обращении производятся дополнительные действия, не рекомендуется
:recycle:
Длина по осям может отличаться. Длина векторов в пределах одной оси одинакова.
Изменение
(методы)
reshape()
: можно добавлять или удалять измерения в массиве, а также изменять количество элементов в каждом измерении.
numpy.reshape(
массив, новаяРазмерность, /order=..
)
новаяРазмерность
- целое число или кортеж целых чисел
Для кортежа последнее значение
-1
- автоматический выбор на основе предыдущих значений и общего количества данных
массив
.reshape(
новаяРазмерность
)
Например, можно преобразовать одномерный массив в многомерный
import Numpy as np
Определения
OLAP-куб
— (On-Line Analytical Processing — интерактивный анализ данных) многомерный массив данных