Jak wspomniano w komentarzach, tak naprawdę zawsze po prostu modyfikujesz jedną tablicę o różnych kształtach. W numpy nie ma sensu powiedzieć, że masz tablicę 2d z tablic 1 x 3
. Tak naprawdę jest to tablica n x 3
.
Zaczynamy 1d tablicy długości 3*n
(Dodałem trzy numery na swoim przykładzie, aby różnica między 3 x n
i n x 3
tablicy jasny):
>>> import numpy as np
>>> rgbValues = np.array([14, 25, 19, 24, 25, 28, 58, 87, 43, 1, 2, 3])
>>> rgbValues.shape
(12,)
I przekształcić go za n x 3
:
>>> lmsValues = rgbValues.reshape(-1, 3)
>>> lmsValues
array([[14, 25, 19],
[24, 25, 28],
[58, 87, 43],
[ 1, 2, 3]])
>>> lmsValues.shape
(4, 3)
Jeśli chcesz być każdy element w kształcie 3 x 1
, może po prostu chcesz przenieść tablicę. Przełączniki to wiersze i kolumny, więc kształt jest 3 x n
>>> lmsValues.T
array([[14, 24, 58, 1],
[25, 25, 87, 2],
[19, 28, 43, 3]])
>>> lmsValues.T.shape
(3, 4)
>>> lmsValues.T[0]
array([14, 24, 58, 1])
>>> lmsValues.T[0].shape
(4,)
Jeśli naprawdę chcesz każdy element w lmsValues
się być 1 x 3
tablicę, można to zrobić, ale to musi być 3d tablica w kształcie n x 1 x 3
:
>>> lmsValues = rgbValues.reshape(-1, 1, 3)
>>> lmsValues
array([[[14, 25, 19]],
[[24, 25, 28]],
[[58, 87, 43]],
[[ 1, 2, 3]]])
>>> lmsValues.shape
(4, 1, 3)
>>> lmsValues[0]
array([[14, 25, 19]])
>>> lmsValues[0].shape
(1, 3)
Kiedy mówi 2D tablicy macierzy 1x3, to jest kształtu (n, n-1, 3)? Przykład tutaj może pomóc wyjaśnić! –
Głównym problemem jest to, że każda pozycja 'lmsValues' ma już określony kształt, więc przypisanie jej do tego o innym kształcie jest niedozwolone. Zgadzam się z @AndyHayden, jednak prosty przykład danych wejściowych i oczekiwanych będzie pomocny w odpowiedzi na twoje pytanie. – cm2
Edytowane, teraz powinno być bardziej zrozumiałe –