Лабораторная работа 3 Операции над массивами и создание структурированных массивов



бет2/10
Дата09.05.2022
өлшемі0,56 Mb.
#33776
түріЛабораторная работа
1   2   3   4   5   6   7   8   9   10
Байланысты:
лаб 3

Символ

Описание

Пример

'b'

Байтовый тип

np.dtype('b')

'i'

Знаковое целое число

np.dtype('i4') == np.int32

'u'

Беззнаковое целое число

np.dtype('u1') == np.uint8

'f'

Число с плавающей точкой

np.dtype('f8') == np.int64

'c'

Комплексное число с плавающей точкой

np.dtype('c16') == np.complex128

'S', 'a'

Строка

np.dtype('S5')

'U'

Строка в кодировке Unicode

np.dtype('U') == np.str_

'V'

Неформатированные данные (тип void)

np.dtype('V') == np.void



«Прихотливая» индексация

Суть «прихотливой» индексации проста: она заключается в передаче массива индексов с целью одновременного доступа к нескольким элементам массива. На­пример, рассмотрим следующий массив:

import numpy as np

rand = np.random.RandomState(42)

x = rand.randint(100, size=10)

print(x)
[51 92 14 71 60 20 82 86 74 74]

Допустим, нам требуется обратиться к трем различным элементам. Можно сделать это следующим образом:

[x[3], x[7], x[2]]

Out: [71, 86, 14]

С другой стороны, можно передать единый список индексов и получить тот же результат:

ind = [3, 7, 4]

x[ind]


Out: array([71, 86, 60])

В случае «прихотливой» индексации форма результата отражает форму массивов индексов (index arrays), а не форму индексируемого массива:

ind = np.array([[3, 7],

[4, 5]])

x[ind]
Out: array([[71, 86],

[60, 20]])

«Прихотливая» индексация работает и в случае многомерных массивов. Рассмо­трим следующий массив:

X = np.arange(12).reshape((3, 4))

X
Out: array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

Аналогично обычной индексации первый индекс относится к строкам, а второй – к столбцам:

row = np.array([0, 1, 2])

col = np.array([2, 1, 3])

X[row, col]
Out: array([ 2, 5, 11])

Первое значение в результате – X[0, 2], второе – X[1, 1], и третье – X[2, 3]. Если мы скомбинируем вектор-столбец и вектор-строку в индексах, то получим двумерный результат:

X[row[:, np.newaxis], col]
Out: array([[ 2, 1, 3],

[ 6, 5, 7],

[10, 9, 11]])

Каждое строчное значение соединяется с каждым вектором-столбцом точно так же, как при транслировании арифметических операций. Например:

row[:, np.newaxis] * col
Out: array([[0, 0, 0],

[2, 1, 3],

[4, 2, 6]])

При работе с «прихотливой» индексацией важно никогда не забывать, что возвращаемое значение отражает транслируемую форму индексов, а не форму индек­сируемого массива.




Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет