Что такое основная строка и основной столбец в numpy?

Я новичок в numpy, и я читал numpy, но я не могу понять основные строки и основные столбцы в numpy, может ли кто-нибудь объяснить на примере самым простым способом? Любой ответ будет оценен, спасибо

1 ответ

Решение

Рассмотрим такой массив:

>>> A = np.random.randint(low=1, high=9, size=(3,3))
>>> A   
array([[8, 7, 2],
       [4, 2, 5],
       [8, 6, 7]])

Использование строкового типа означает, что значения будут храниться в памяти следующим образом (при условии, что 64-битные целые числа):

Memory address  0x00  0x08  0x10  0x18  0x20  0x28  0x30  0x38  0x40
Value              8     7     2     4     2     5     8     6     7

В то время как основное хранилище столбцов будет выглядеть так:

Memory address  0x00  0x08  0x10  0x18  0x20  0x28  0x30  0x38  0x40
Value              8     4     8     7     2     6     2     5     7

По умолчанию Numpy хранит в строчном порядке.

>>> A[0].__array_interface__['data']
(14502656, False)
>>> A[1].__array_interface__['data']
(14502680, False)  # 14502680 - 14502656 == 24

Вы можете видеть, что вторая строка данных находится на расстоянии 24 байта (три значения int64) от первой. Транспонированный массив предлагает просмотр исходных данных массива, а не копию, которая разделена таким образом, чтобы отображать основной столбец (фактические данные в памяти остаются в том же порядке):

>>> A.T[0].__array_interface__['data']
(14502656, False)
>>> A.T[1].__array_interface__['data']
(14502664, False)  # 14502664 - 14502656 == 8
Другие вопросы по тегам