Здається, питання та приклад беруть початок із книги « Пітон для аналізу даних» Веса МакКінні. Ця особливість transpose
згадується в розділі 4.1. Транспонування масивів та обмін сокирами .
Для масивів вищих розмірів transpose
буде прийнято набір номерів осей для перестановки осей (для додаткового вигину розуму).
Тут "перестановка" означає "переставляти", таким чином переставляючи порядок осей.
Цифри в .transpose(1, 0, 2)
визначають, як змінюється порядок осей порівняно з оригіналом. Використовуючи .transpose(1, 0, 2)
, ми маємо на увазі: "Змінити 1-ю сокиру на 2-ю". Якщо ми використаємо .transpose(0, 1, 2)
, масив залишиться незмінним, тому що нічого змінити немає; це замовлення за замовчуванням.
Приклад у книзі з (2, 2, 4)
розмірним масивом не дуже зрозумілий, оскільки 1-я та 2-а осі мають однакові розміри. Отже, кінцевий результат, здається, не змінюється, окрім переупорядкування рядків arr[0, 1]
та arr[1, 0]
.
Якщо ми спробуємо інший приклад із тривимірним масивом, причому кожен вимір має різний розмір, частина перестановки стає більш зрозумілою.
In [2]: x = np.arange(24).reshape(2, 3, 4)
In [3]: x
Out[3]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
In [4]: x.transpose(1, 0, 2)
Out[4]:
array([[[ 0, 1, 2, 3],
[12, 13, 14, 15]],
[[ 4, 5, 6, 7],
[16, 17, 18, 19]],
[[ 8, 9, 10, 11],
[20, 21, 22, 23]]])
Тут оригінальні розміри масиву (2, 3, 4)
. Ми змінили 1-го та 2-го, тож він стає (3, 2, 4)
в розмірі. Якщо ми придивимося ближче, щоб побачити, як саме відбулася перебудова; масиви чисел, здається, змінилися за певним зразком. Використовуючи аналогію з папером @ RobertB , якби ми взяли 2 шматки чисел і записали кожен на аркушах, а потім взяли по одному рядку з кожного аркуша, щоб побудувати один вимір масиву, ми б тепер мали масив розміром 3x2x4 , вважаючи від зовнішнього до самого внутрішнього шару.
[ 0, 1, 2, 3] \ [12, 13, 14, 15]
[ 4, 5, 6, 7] \ [16, 17, 18, 19]
[ 8, 9, 10, 11] \ [20, 21, 22, 23]
Це може бути гарною ідеєю грати з масивами різного розміру та міняти різні осі, щоб краще зрозуміти, як це працює.