Используя NumPy, я хотел бы создать список всех линий и диагоналей n-мерного массива с длиной k.
Возьмем случай следующего трехмерного массива с длинами трех.
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],
[24, 25, 26]]])
В этом случае я хотел бы получить все следующие типы последовательностей. Для любого данного случая я хотел бы получить все возможные последовательности каждого типа. Примеры желаемых последовательностей приведены в скобках ниже, для каждого случая.
- 1D строки
- ось x (
0, 1, 2
) - y ось (
0, 3, 6
) - ось z (
0, 9, 18
)
- ось x (
- Двумерные диагонали
- x/y оси (
0, 4, 8
,2, 4, 6
) - x/z оси (
0, 10, 20
,2, 10, 18
) - оси y/z (
0, 12, 24
,6, 12, 18
)
- x/y оси (
- Трехмерные диагонали
- x/y/z оси (
0, 13, 26
,2, 13, 24
)
- x/y/z оси (
Решение должно быть обобщено, так что оно будет генерировать все строки и диагонали для массива, независимо от количества массивов измерений или длины (которое является постоянным во всех измерениях).