Чтение онлайн

на главную - закладки

Жанры

Язык программирования Python
Шрифт:

Через атрибут flat можно получить одномерное представление массива:

Листинг

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

>>> b = a.flat

>>> b

array([1, 2, 3, 4])

>>> b[0] = 9

>>> b

array([9, 2, 3, 4])

>>> a

array([[9, 2],

[3, 4]])

Следует заметить, что это новый вид того же массива, поэтому присваивание значений его элементам приводит к изменениям в исходном

массиве.

Функция Numeric.resizeпохожа на Numeric.reshape, но может подстраивать число элементов:

Листинг

>>> print Numeric.resize(«NUMERIC», (3, 2))

[[N U]

[M E]

[R I]]

>>> print Numeric.resize(«NUMERIC», (3, 4))

[[N U M E]

[R I C N]

[U M E R]]

Функция Numeric.zeros порождает массив из одних нулей, а Numeric.ones - из одних единиц. Единичную матрицу можно получить с помощью функции Numeric.identity(n):

Листинг

>>> print Numeric.zeros((2,3))

[[0 0 0]

[0 0 0]]

>>> print Numeric.ones((2,3))

[[1 1 1]

[1 1 1]]

>>> print Numeric.identity(4)

[[1 0 0 0]

[0 1 0 0]

[0 0 1 0]

[0 0 0 1]]

Для копирования массивов можно использовать метод copy:

Листинг

>>> import Numeric

>>> a = Numeric.arrayrange(9)

>>> a.shape = (3, 3)

>>> print a

[[0 1 2]

[3 4 5]

[6 7 8]]

>>> a1 = a.copy

>>> a1[0, 1] = -1 # операция над копией

>>> print a

[[0 1 2]

[3 4 5]

[6 7 8]]

Массив можно превратить обратно в список с помощью метода tolist:

Листинг

>>> a.tolist

[[0, 1, 2], [3, 4, 5], [6, 7, 8]]

Срезы

Объекты–массивы Numeric используют расширенный синтаксис выделения среза. Следующие примеры иллюстрируют различные варианты записи срезов. Функция Numeric.arrayrange является аналогом range для массивов.

Листинг

>>> import Numeric

>>> a = Numeric.arrayrange(24) + 1

>>> a.shape = (4, 6)

>>> 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[1,2] # элемент 1,2

9

>>> print a[1,:] # строка 1

[ 7 8 9 10 11 12]

>>> print a[1] # тоже строка 1

[ 7 8 9 10 11 12]

>>> print a[:,1] # столбец 1

[ 2 8 14 20]

>>> print a[-2,:] # предпоследняя строка

[13 14 15 16 17 18]

>>> print a[0:2,1:3] # окно 2x2

[[2 3]

[8 9]]

>>> 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) Гиперболические функции

Поделиться:
Популярные книги

Локки 7. Потомок бога

Решетов Евгений Валерьевич
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Локки 7. Потомок бога

Тринадцатый XII

NikL
12. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
7.00
рейтинг книги
Тринадцатый XII

Старшеклассник без клана. Апелляция кибер аутсайдера

Афанасьев Семен
1. Старшеклассник без клана. Апелляция аутсайдера
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Старшеклассник без клана. Апелляция кибер аутсайдера

Орден Архитекторов 11

Винокуров Юрий
11. Орден Архитекторов
Фантастика:
фэнтези
5.00
рейтинг книги
Орден Архитекторов 11

Кодекс Охотника. Книга XXV

Винокуров Юрий
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга XXV

Кай из рода красных драконов 3

Бэд Кристиан
3. Красная кость
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кай из рода красных драконов 3

Солдат Империи

Земляной Андрей Борисович
1. Страж
Фантастика:
попаданцы
альтернативная история
6.67
рейтинг книги
Солдат Империи

Бастард Императора. Том 2

Орлов Андрей Юрьевич
2. Бастард Императора
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бастард Императора. Том 2

По прозвищу Святой. Книга вторая

Евтушенко Алексей Анатольевич
2. Святой
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
По прозвищу Святой. Книга вторая

Сильнейший Столп Империи. Книга 5

Ермоленков Алексей
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 5

Вперед в прошлое 8

Ратманов Денис
8. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 8

Лекарь Империи

Карелин Сергей Витальевич
1. Лекарь Империи
Фантастика:
городское фэнтези
аниме
дорама
фэнтези
попаданцы
5.00
рейтинг книги
Лекарь Империи

Мастер 8

Чащин Валерий
8. Мастер
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Мастер 8

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11