The problem is how to split a matrix into blocks.

If I have a 4x4 matrix looks like this.

```
[[a, b, c, d], [e, f, g, h], [h, i, j, k], [l, m, n, o]]

```

and I want to split into blocks as following:

```
[a, b]  
[c, d]  

[h, i]  
[j, k]

[e, f]  
[g, h]  

[l, m]  
[n, o]

```

But `a`, `b`, `c`...`o` are nested tuples, such as `a = [(x1,y1),(x2,y2),...(xn,yn)]`. The `n` is not necessarily equal for each element in the matrix.

Is there any built in function can do that or I have to manipulate the indices and pick the elements one by one? I tried to use `np.vsplit()` and `np.hsplit()`, but they didn't work for my data.

Update:
`np.vsplit()` and `np.hsplit()` will probably solve my problem, but there is one more problem remaining. The data I get are 16 lists of coordinates, but the length of these lists (the number of 2d-coordinates in each list) are not equal. In order to use `np.vsplit()` and `np.hsplit()` I have to convert the 16 lists into numpy ndarray and reshape it. The shape of this ndarray should be something like `(4, 4, x, 2)` which means they are placed in `4` rows, `4` columns, each element has `x=number_of_coordinates_in_that_list`and `2` columns. Can I use `np.reshape()` to achieve what I want?