При наличии пустого массива размером n, каждое направление которого имеет длину m, я хотел бы перебрать все одномерные массивы длины m.
Например, рассмотрим: р>
[x[i,:] for i in range(4)] + [x[:,i] for i in range(4)] + [np.array([x[i,i] for i in range(4)])] + [np.array([x[3-i,i] for i in range(4)])]
Мне неясно, как обобщить это на массивы более высокой размерности, поскольку положение «:» в срезе также необходимо перебирать. В более многомерном аналоге
При наличии пустого массива размером n, каждое направление которого имеет длину m, я хотел бы перебрать все одномерные массивы длины m. Например, рассмотрим: р> [code]import numpy as np x = np.identity(4) array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]]) [/code] тогда я хотел бы найти все одномерные массивы длиной 4. Таким образом, результат должен включать все 4 строки, все 4 столбца и 2 диагонали:[code][x[i,:] for i in range(4)] + [x[:,i] for i in range(4)] + [np.array([x[i,i] for i in range(4)])] + [np.array([x[3-i,i] for i in range(4)])] [/code] Мне неясно, как обобщить это на массивы более высокой размерности, поскольку положение «:» в срезе также необходимо перебирать. В более многомерном аналоге [code]slices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]][/code] мы можем получить [code][x[i,j,:] for (i,j) in slices] [/code] но тогда я не уверен, как продолжить перебор перестановок [i,j,:].