Numpy.stack(arrays, axis=0, out=None, *, dtype=None, casting='same_kind')

what does the * mean here?

The arguments after the * must be passed as keyword arguments, whereas arguments before the * can be passed by position, like this:

np.stack(arrays, 1, out_array, dtype=np.int32)

It’s the same as for any other parameter list. The * (with no name) is not a separate parameter, but instead everything after the * can only be passed by keyword.