Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 324

>>> l[1,2]

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: list indices must be integers, not tuple

>>> l[1][2]

7

Еще один момент: разбиение работает, но опять же только внутри множества,

заключенного в один набор квадратных скобок. Снова создадим привычный про-

верочный массив:

>>> a = np.arange(10)

>>> a = a.reshape(2, 5)

>>> a

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

[5, 6, 7, 8, 9]])

NumPy

419

Используйте разбиение, чтобы получить первый ряд — элементы начиная со

смещения 2, до конца:

>>> a[0, 2:]

array([2, 3, 4])

Теперь получим последний ряд — все элементы вплоть до третьего с конца:

>>> a[-1, :3]

array([5, 6, 7])

Вы также можете присвоить значение более чем одному элементу с помощью

разбиения. Следующее выражение присваивает значение 1000 колонкам (смеще-

ниям) 2 и 3 каждого ряда:

>>> a[:, 2:4] = 1000

>>> a

array([[ 0, 1, 1000, 1000, 4],

[ 5, 6, 1000, 1000, 9]])

Математика массивов

Создание и изменение формы массивов так нас увлекли, что мы почти забыли сделать

с ними что-то более полезное. Для начала используем переопределенный в NumPy

оператор умножения (*), чтобы умножить все значения массива за раз:

>>> from numpy import *

>>> a = arange(4)

>>> a

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

>>> a *= 3

>>> a

array([0, 3, 6, 9])

Если вы пытались умножить каждый элемент обычного списка Python на чис-

ло, вам бы понадобились цикл или включение:

>>> plain_list = list(range(4))

>>> plain_list

[0, 1, 2, 3]

>>> plain_list = [num * 3 for num in plain_list]

>>> plain_list

[0, 3, 6, 9]

Такое поведение применимо также к сложению, вычитанию, делению и другим