====intro.====
(2, 0, 1)
[]
==
(2, 1, 2)
[[[0 0]]
[[0 1]]]
==
(2, 2, 3)
[[[0 0 0]
[1 1 1]]
[[0 1 2]
[0 1 2]]]
==
(3, 2, 3, 1)
[[[[0]
[0]
[0]]
[[1]
[1]
[1]]]
[[[0]
[1]
[2]]
[[0]
[1]
[2]]]
[[[0]
[0]
[0]]
[[0]
[0]
[0]]]]
==
(3, 2, 3, 3)
[[[[0 0 0]
[0 0 0]
[0 0 0]]
[[1 1 1]
[1 1 1]
[1 1 1]]]
[[[0 0 0]
[1 1 1]
[2 2 2]]
[[0 0 0]
[1 1 1]
[2 2 2]]]
[[[0 1 2]
[0 1 2]
[0 1 2]]
[[0 1 2]
[0 1 2]
[0 1 2]]]]
==
(2, 4, 5)
[[[0 0 0 0 0]
[1 1 1 1 1]
[2 2 2 2 2]
[3 3 3 3 3]]
[[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]]]
==
[array([1, 2, 3]), array([4, 5]), array([6, 7])]
3
2
2
<generator object cartesian.<locals>.<genexpr> at 0x103f99410>
==ix==
[[[[0 0]
[0 0]]
[[1 1]
[1 1]]
[[2 2]
[2 2]]]
[[[0 0]
[1 1]]
[[0 0]
[1 1]]
[[0 0]
[1 1]]]
[[[0 1]
[0 1]]
[[0 1]
[0 1]]
[[0 1]
[0 1]]]]
[[0 0 0 0 1 1 1 1 2 2 2 2]
[0 0 1 1 0 0 1 1 0 0 1 1]
[0 1 0 1 0 1 0 1 0 1 0 1]]
[[1 4 6]
[1 4 7]
[1 5 6]
[1 5 7]
[2 4 6]
[2 4 7]
[2 5 6]
[2 5 7]
[3 4 6]
[3 4 7]
[3 5 6]
[3 5 7]]