>>> print a[1,::3] # каждый третий элемент строки 1
[ 7 10]
>>> print a[:,:: -1] # элементы строк в обратном порядке
[[ 6 5 4 3 2 1]
[12 11 10 9 8 7]
[18 17 16 15 14 13]
[24 23 22 21 20 19]]
Срез не копирует массив (как это имеет место со списками), а дает доступ к некоторой части массива. Далее в примере меняется на 0 каждый третий элемент строки 1:
>>> a[1,::3] = Numeric.array([0,0])
>>> print a
[[ 1 2 3 4 5 6]
[ 0 8 9 0 11 12]
[13 14 15 16 17 18]
[19 20 21 22 23 24]]
В следующих примерах находит применение достаточно редкая синтаксическая конструкция: срез с многоточием (Ellipsis
). Многоточие ставится для указания произвольного числа пропущенных размерностей (:
,:
,...
,:
):
>>> import Numeric
>>> a = Numeric.arrayrange(24) + 1
>>> a.shape = (2,2,2,3)
>>> print a
[[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
[[[13 14 15]
[16 17 18]]
[[19 20 21]
[22 23 24]]]]
>>> print a[0,...] # 0–й блок
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
>>> print a[0,:,:,0] # срез по первой и последней размерностям
[[ 1 4]
[ 7 10]]
>>> print a[0,...,0] # то же, но с использованием многоточия
[[ 1 4]
[ 7 10]]
Универсальные функции
Модуль Numeric
определяет набор функций для применения к элементам массива. Функции применимы не только к массивам, но и к последовательностям (к сожалению, итераторы пока не поддерживаются). В результате получаются массивы.
Функция | Описание |
---|---|
add(x, y) , subtract(x, y) | Сложение и вычитание |
multiply(x, y) , divide(x, y) | Умножение и деление |
remainder(x, y) , fmod(x, y) | Получение остатка от деления (для целых чисел и чисел с плавающей запятой) |
power(x) | Возведение в степень |
sqrt(x) | Извлечение корня квадратного |
negative(x) , absolute(x) , fabs(x) | Смена знака и абсолютное значение |
ceil(x) , floor(x) | Наименьшее (наибольшее) целое, большее (меньшее) или равное аргументу |
hypot(x, y) | Длина гипотенузы (даны длины двух катетов) |
sin(x) , cos(x) , tan(x) | Тригонометрические функции |
arcsin(x) , arccos(x) , arctan(x) | Обратные тригонометрические функции |
arctan2(x, y) | Арктангенс от частного аргумента |
sinh(x) , cosh(x) , tanh(x) | Гиперболические функции |
arcsinh(x) , arccosh(x) , arctanh(x) | Обратные гиперболические функции |
exp(x) | Экспонента (ex) |
log(x) , log10(x) | Натуральный и десятичный логарифмы |
maximum(x, y) , minimum(x, y) | Максимум и минимум |
conjugate(x) | Сопряжение (для комплексных чисел) |
equal(x, y) , not_equal(x, y) | Равно, не равно |
greater(x, y) , greater_equal(x, y) | Больше, больше или равно |
less(x, y) , less_equal(x, y) | Меньше, меньше или равно |
logical_and(x, y) , logical_or(x, y) | Логические И, ИЛИ |
logical_xor(x, y) | Логическое исключающее ИЛИ |
logical_not(x) | Логические НЕ |
bitwise_and(x, y) , bitwise_or(x, y) | Побитовые И, ИЛИ |
bitwise_xor(x, y) | Побитовое исключающее ИЛИ |
invert(x) | Побитовая инверсия |
left_shift(x, n) , right_shift(x, n) | Побитовые сдвиги влево и вправо на n битов |
Перечисленные функции являются объектами типа ufunc
и применяются к массивам поэлементно. Эти функции имеют специальные методы: