Data analysis. NumPy. Часть 2
Это вторая статья в серии, где мы знакомимся с базовый набор инструментов для первичного анализа данных с помощью Python.
В этой части рассмотрим транслирование(broadcasting), сравнения массивов и маски, "прихотливая" индексация (fancy indexing), сортировки и структурированные данные.
Часть 1. Введение в NumPy
Часть 2. Подробней о NumPy
Часть 3. Первичный анализ. Pandas
Часть 4. Визуализация. Matplotlib и Seaborn
Часть 5. Немного machine learning с помощью scikit-learn
Часть 6. Больше данных. Обучение с Vowpal Wabbit
В статье будет описания и различного рода заметки, а примеры с комментариями написаны в jupyter notebook
Транслирование(Broadcasting) (notebook)
Еще один способ применения векторизации - использовать возможности транслирования(broadcasting). Это набор правил по применению бинарных универсальных функций к массивам различного размера.
Для массивов одного размера бинарные операции выполняются поэлементно. Транслирование дает возможность выполнять такие операции над массивами различных размеров.
Правила транслирования
Полупрозрачные кубики представляют собой транслируемые значения.
Сравнения и маски (notebook)
Маски удобно использовать для извлечения, модификации, подсчета или других модификаций со значениями в массиве по какому-либо критерию.
Ключевые слова AND и OR определяют истинность или ложность всего объекта, операторы | и & оперируют отдельными битами внутри каждого из объекта.
"Прихотливая" индексация (fancy indexing) (notebook)
Простая индексация: arr[0]
Срезы: arr[: 5]
Маски: arr[arr > 0]
В "прихотливой" индексации передаются массивы индексов. Это дает возможность быстрого доступа к различным подмножествам.
В случае "прихотливой" индексации форма результата отражает форму массивов индексов(index arrays), а не форму индексированного массива.
Сортировка массива (notebook)
По умолчанию np.sort имеет сложность O(n*logn), это алгоритм быстрой сортировки (quicksort). Так же доступны алгоритмы сортировки слиянием (mergesort) и пирамидальная сортировка (heapsort).
Иногда необходимо найти K наименьших значений в массиве, для этой цели можно использовать np.partition. Эта функция принимает массив и число, на выходе получаем массив, где первые K элементов наименьшие в этом массиве.
Структурированные данные (notebook)
Преимущество таких данных в том, что dtype напрямую соответствует структуре С. По этому есть возможность напрямую обращаться к буферу памяти таких массивов из программы на С.
Но в большинстве случаев удобней использовать более высокоуровневый объект DataFrame из пакета Pandas.
В этой части рассмотрим транслирование(broadcasting), сравнения массивов и маски, "прихотливая" индексация (fancy indexing), сортировки и структурированные данные.
Часть 1. Введение в NumPy
Часть 2. Подробней о NumPy
Часть 3. Первичный анализ. Pandas
Часть 4. Визуализация. Matplotlib и Seaborn
Часть 5. Немного machine learning с помощью scikit-learn
Часть 6. Больше данных. Обучение с Vowpal Wabbit
В статье будет описания и различного рода заметки, а примеры с комментариями написаны в jupyter notebook
Транслирование(Broadcasting) (notebook)
Еще один способ применения векторизации - использовать возможности транслирования(broadcasting). Это набор правил по применению бинарных универсальных функций к массивам различного размера.
Для массивов одного размера бинарные операции выполняются поэлементно. Транслирование дает возможность выполнять такие операции над массивами различных размеров.
Правила транслирования
- Если размерность двух массивов отличаются, форма массива с меньшей размерностью дополняется единицами с ведущей(левой) стороны.
- Если форма двух массивов не совпадает в каком-то измерении, массив с формой , равной 1 в данном измерении, растягивается вплоть до соответствия форме другого массива.
- Если в каком-либо измерении размеры массивов различаются и ни один не равен 1, генерируется ошибка.
astroml |
Сравнения и маски (notebook)
Маски удобно использовать для извлечения, модификации, подсчета или других модификаций со значениями в массиве по какому-либо критерию.
Ключевые слова AND и OR определяют истинность или ложность всего объекта, операторы | и & оперируют отдельными битами внутри каждого из объекта.
"Прихотливая" индексация (fancy indexing) (notebook)
Простая индексация: arr[0]
Срезы: arr[: 5]
Маски: arr[arr > 0]
В "прихотливой" индексации передаются массивы индексов. Это дает возможность быстрого доступа к различным подмножествам.
В случае "прихотливой" индексации форма результата отражает форму массивов индексов(index arrays), а не форму индексированного массива.
Сортировка массива (notebook)
По умолчанию np.sort имеет сложность O(n*logn), это алгоритм быстрой сортировки (quicksort). Так же доступны алгоритмы сортировки слиянием (mergesort) и пирамидальная сортировка (heapsort).
Иногда необходимо найти K наименьших значений в массиве, для этой цели можно использовать np.partition. Эта функция принимает массив и число, на выходе получаем массив, где первые K элементов наименьшие в этом массиве.
Структурированные данные (notebook)
Преимущество таких данных в том, что dtype напрямую соответствует структуре С. По этому есть возможность напрямую обращаться к буферу памяти таких массивов из программы на С.
Но в большинстве случаев удобней использовать более высокоуровневый объект DataFrame из пакета Pandas.
Комментарии
Отправить комментарий