Язык программирования 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]]



Содержание раздела