There are the index tricks `r_`

and `c_`

.

```
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> z = np.zeros((2, 3), dtype=a.dtype)
>>> np.c_[a, z]
array([[1, 2, 0, 0, 0],
[3, 4, 0, 0, 0]])
```

If this is performance critical code, you might prefer to use the equivalent `np.concatenate`

rather than the index tricks.

```
>>> np.concatenate((a,z), axis=1)
array([[1, 2, 0, 0, 0],
[3, 4, 0, 0, 0]])
```

There are also `np.resize`

and `np.ndarray.resize`

, but they have some limitations (due to the way numpy lays out data in memory) so read the docstring on those ones. You will probably find that simply concatenating is better.

By the way, when I’ve needed to do this I usually just do it the basic way you’ve already mentioned (create an array of zeros and assign the smaller array inside it), I don’t see anything wrong with that!