Постановка задачи
Необходимо разделить N-мерную сетку на «кубики»:
Ex) Двумерный случай:
(-1,1) | (0,1) | (1,1)
(- 1,0) | (0,0) | (1,0)
(- 1, -1) | (0, -1) | (1, -1)
Будет 4 ячейки, каждая с 2 ^ D точками:
Я хочу иметь возможность обрабатыватьсетка, помещая точки координат каждой ячейки в контейнер для дальнейшей обработки.
Cells = [{(-1,1) (0,1)(-1,0),(0,0)},
{(0,1),(1,1),(0,0),(1,0)},
{(-1,0),(0,0)(-1,-1),(0,-1)}
{(0,0),(1,0)(0,-1),(1,-1)}]
Я использую следующее для генерации сетки для произвольного измерения d:
grid = [np.linspace(-1.0 , 1.0, num = K+1) for i in range(d)]
res_to_unpack = np.meshgrid(*grid,indexing = 'ij')
Который имеет вывод:
[array([[-1., -1., -1.],
[ 0., 0., 0.],
[ 1., 1., 1.]]), array([[-1., 0., 1.],
[-1., 0., 1.],
[-1., 0., 1.]])]
Так что я хочу иметь возможность генерировать вышеупомянутый контейнер ячеек для данной D-мерной сетки.Разделить на заданное K, которое является степенью 2.
Мне нужен этот контейнер, поэтому для каждой ячейки мне нужно сослаться на все 2 ^ D связанные точки и вычислить расстояние от начала координат.
Редактировать для уточнения
K должен разделить сетку на K ** D количество ячеек с (K + 1) ** D точками.Каждая ячейка должна иметь 2 ** D количества очков.Каждая «клетка» будет иметь объем (2 / К) ^ D.
То есть, для K = 4, D = 2
Cells = [ {(-1,1),(-0.5,1),(-1,0.5),(-0.5,0.5)},
{(-0.5,1),(-0.5,0.5)(0.0,1.0),(0,0.5)},
...
{(0.0,-0.5),(0.5,-0.5),(0.0,-1.0),(0.5,-1.0)},
{(0.5,-1.0),(0.5,-1.0),(1.0,-0.5),(1.0,-1.0)}]
Это вывод для TopLeft, TopLeft + Right Over, Bottom Left, Bottom Left + Over Left.В этом наборе будет 16 ячеек, каждая с четырьмя координатами каждая.Для увеличения K, скажем, K = 8. Будет 64 ячейки, каждая с четырьмя точками.