





alpha — это одномерный массив, транспонирование — это само собой.
beta — это двумерный массив, поэтому вы можете преобразовать (1,n) в (n,1).
Чтобы сделать то же самое с alpha, вам нужно добавить измерение, вам не нужно его транспонировать:
alpha[:, None]
alpha представляет собой одномерный массив формы (4,). Транспонирование снова просто alpha, то есть alpha == alpha.T.
beta представляет собой двумерный массив формы (1,4). Это одна строка, но она имеет размеры два. Его транспонирование выглядит как один столбец формы (4,1).
Из документации (ссылка на сайт):
Transposing a 1-D array returns an unchanged view of the original array.
Массив [1,2,3,4] является одномерным, а массив [[1,2,3,4]] представляет собой двумерный массив 1x4.
Вторая пара скобок указывает на то, что это двумерный массив, поэтому с таким и массивом транспонированный массив отличается от первого массива (поскольку транспонирование переключает 2 измерения). Однако, если массив только 1D, транспонирование ничего не меняет, и результирующий массив равен исходному.
Когда я пришел в мир языков программирования, придя из «математической стороны бизнеса», это тоже показалось мне странным. Немного подумав, я понял, что с точки зрения программирования они разные. Взгляните на следующий список:
a = [1,2,3,4,5]
Это 1D структура. Это так, потому что для возврата значений 1, 2, 3, 4 и 5 вам просто нужно присвоить одно значение адреса. 3 будет возвращено, если вы, например, ввели команду a[2].
Теперь взгляните на этот список:
b = [[ 1, 2, 3, 4, 5],
[11, 22, 33, 44, 55]]
Например, чтобы вернуть 11, вам понадобятся два позиционных числа: 1, потому что 11 находится во втором списке, и 0, потому что во втором списке оно находится в первой позиции. Другими словами, b[1,0] возвращает вам 11.
Теперь идет часть трюка. Посмотрите на этот третий список:
c = [ [ 100, 200, 300, 400, 500] ]
Если вы посмотрите внимательно, каждое число требует, чтобы 2 позиционных числа были взяты из списка. Например, для 300 требуется 0, потому что он находится в первом (и единственном) списке, и 2, потому что это третий элемент первого списка. c[0,2] возвращает вам 300.
Этот список можно транспонировать, потому что он имеет два измерения, а операция транспонирования — это то, что меняет позиционные аргументы. Таким образом, c.T вернет вам список, форма которого будет [5,1], поскольку c имеет форму [1,5].
Вернитесь к списку а. Там у вас есть список только с одним позиционным номером. Этот список имеет форму только [5], поэтому у операции транспонирования нет второго позиционного аргумента, с которым можно было бы работать. Поэтому остается [5], и если вы попробуете a.T, вы получите обратно a.
Понятно?
С наилучшими пожеланиями,
Густаво,
[] добавить измерение. Транспонировать нет.