Язык программирования Python.

Методы массивов.

Придать нужную форму массиву можно функцией Numeric.reshape(). Эта функция сразу создает объект–массив нужной формы из последовательности.

>>> import Numeric.

>>> print Numeric.reshape("абракадабр", (5, -1)).

[[а б].

 [р а].

 [к а].

 [д а].

 [б р]].

В этом примере –1 в указании формы говорит о том, что соответствующее значение можно вычислить. Общее количество элементов массива известно (10), поэтому длину вдоль одной из размерностей задавать не обязательно.

Через атрибут 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]].