Niech a
będzie listą w python.Generalizowanie transpozycji macierzy w numpy
a = [1,2,3]
Kiedy transpozycja macierzy jest stosowany do a
, otrzymujemy:
np.matrix(a).transpose()
matrix([[1],
[2],
[3]])
szukam uogólnić tę funkcjonalność, a obok zilustrować co szukam to zrobić za pomocą przykładu. Niech inna lista to b
.
b = [[1, 2], [2, 3], [3, 4]]
W a
, elementy listy są 1, 2 i 3. Chciałbym rozważyć każdy z [1,2]
, [2,3]
i [3,4]
jako elementów listy w b
, wyłącznie w celu wykonywania transpozycję. Chciałbym wyjście będzie w następujący sposób:
array([[[1,2]],
[[2,3]],
[[3,4]]])
Zasadniczo chciałbym być w stanie określić jaki element lista będzie wyglądać, i przeprowadzić transpozycję macierzy w oparciu o to.
Mogę po prostu napisać kilka linii kodu, aby to zrobić, ale moim celem zadawania tego pytania jest sprawdzenie, czy istnieje wbudowana funkcja numpy lub pytonowo, aby to zrobić.
EDYCJA: dane wyjściowe polecenia unutbu odpowiadają wynikom, które mam powyżej. Jednak chciałem rozwiązania, które zadziałałoby w bardziej ogólnym przypadku. Poniżej zamieściłem inne dane wejściowe/wyjściowe. Mój pierwszy przykład nie był wystarczająco szczegółowy, by przekazać to, co chciałem powiedzieć. Niech pozycje w b
będą [1,2]
, [2,3]
, [3,4]
i [5,6]
. Następnie wynik podany poniżej byłby wykonaniem transpozycji macierzy na elementy o wyższych wymiarach. Mówiąc ogólniej, kiedy opiszę, jak mógłby wyglądać element, chciałbym wiedzieć, czy istnieje sposób na dokonanie transpozycji.
Input: b = [[[1, 2], [2, 3]], [[3, 4], [5,6]]]
Output: array([[[1,2], [3,4]],
[[2,3], [5,6]]])
Możesz użyć krotek zamiast list, aby wskazać niepodzielne elementy matrycy. –
Macierze NumPy są zawsze dwuwymiarowe. Twoja pożądana matryca jest trójwymiarowa. – unutbu
Czy zmienił się problem lub edytował rozwiązanie na pytanie? –