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

Придать нужную форму массиву можно функцией 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]]

Больше книг — больше знаний!

Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом

ПОЛУЧИТЬ СКИДКУ