Załóżmy a
pewne 1d numppy.array
z n elementów:2D tablicę wszystkich przesunięć cyklicznych 1D tablicy
a = np.array([a_0, a_1, ..., a_n_minus_1])
ja, aby wygenerować 2d (nX n) numpy.array
zawierający z rzędu i The i p cykliczne przesunięcie a
:
np.array([[a_0, a_1, ..., a_n_minus_1], [a_n_minus_1, a_0, a_1, ...], ...]])
najlepiej bez pętli. Jak można to zrobić skutecznie?
(Funkcja np.roll
wydaje podobne, ale najwyraźniej trwa tylko skalarne shift
.)
Trick robi to skutecznie jest użycie przekątnych. Na przykład główna przekątna będzie pierwszym elementem, itd. –
@JoeKington Way cool, thanks! IIUC, masz zamiar wykorzystać fakt, że cykliczne przesunięcie może być uważane za transformację liniową, tak? –
@JoeKington Właściwie brzmi to bardzo dobrze, ale nie mogę tego rozgryźć - generowanie macierzy wykonujących różne przekształcenia liniowe byłoby bardzo kosztowne, nie? –