К книге
Язык программирования PythonЛекция #5: Численные алгоритмы. Матричные вычисления.. Модуль Numeric. Функции для работы с массивами
50%
Лекция #5: Численные алгоритмы. Матричные вычисления.. Модуль Numeric. Функции для работы с массивами
114

Функций достаточно много, поэтому подробно будут рассмотрены только две из них, а остальные сведены в таблицу.

Функция Numeric.take()

Функция Numeric.take() позволяет взять часть массива по заданным на определенном измерении индексам. По умолчанию номер измерения (третий аргумент) равен нулю.

>>> import Numeric

>>> a = Numeric.reshape(Numeric.arrayrange(25), (5, 5))

>>> print a

[[ 0  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 Numeric.take(a, [1], 0)

[ [5 6 7 8 9]]

>>> print Numeric.take(a, [1], 1)

[[ 1]

 [ 6]

 [11]

 [16]

 [21]]

>>> print Numeric.take(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]]]

В отличие от среза, функция Numeric.take() сохраняет размерность массива, если конечно, структура заданных индексов одномерна. Результат Numeric.take(a, [[1,2],[3,4]]) показывает, что взятые по индексам части помещаются в массив со структурой самих индексов, как если бы вместо 1 было написано [5 6 7 8 9], а вместо 2 — [10 11 12 13 14] и т.д.

Функции Numeric.diagonal() и Numeric.trace()

Функция Numeric.diagonal() возвращает диагональ матрицы. Она имеет следующие аргументы:

Функция Numeric.trace() (для вычисления следа матрицы) имеет те же аргументы, но суммирует элементы на диагонали. В примере ниже рассмотрены обе эти функции:

>>> import Numeric

>>> a = Numeric.reshape(Numeric.arrayrange(16), (4, 4))

>>> print a

[[ 0  1  2  3]

 [ 4  5  6  7]

 [ 8  9 10 11]

 [12 13 14 15]]

>>> for i in range(-3, 4):

... print "Sum", Numeric.diagonal(a, i), "=", Numeric.trace(a, i)

...

Sum [12] = 12

Sum [ 8 13] = 21

Sum [ 4  9 14] = 27

Sum [ 0  5 10 15] = 30

Sum [ 1  6 11] = 18

Sum [ 2  7] = 9

Sum [ 3] = 3

Функция Numeric.choose()

Эта функция использует один массив с целыми числами от 0 до n для выбора значения из одного из заданных массивов:

>>> a = Numeric.identity(4)

>>> b0 = Numeric.reshape(Numeric.arrayrange(16), (4, 4))

>>> b1 = -Numeric.reshape(Numeric.arrayrange(16), (4, 4))

>>> print Numeric.choose(a, (b0, b1))

[[  0  1   2   3]

 [  4 -5   6   7]

 [  8  9 -10  11]

 [ 12 13  14 -15]]

Свод функций модуля Numeric

Следующая таблица приводит описания функций модуля Numeric.

В этой таблице в качестве обозначения типа type можно указывать рассмотренные выше константы: Int, Float и т.п.

Модуль Numeric также определяет константы e (число e) и pi (число пи).

Предыдущая главаГлава 114 из 230Следующая глава