Рассмотрим массив, подобный следующему:
>>> A = np.random.randint(low=1, high=9, size=(3,3))
>>> A
array([[8, 7, 2],
[4, 2, 5],
[8, 6, 7]])
Использование Major-row означает, что значения будут храниться в памяти следующим образом (при условии 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