I have two numpy arrays a
and b
such that a.shape[:-1]
and b.shape
are broadcastable. With this constraint only, I want to calculate an array c
according to the following:
c = numpy.empty(numpy.broadcast_shapes(a.shape[:-1],b.shape),a.dtype)
for i in range(a.shape[-1]):
c[...,i] = a[...,i] * b
The above code certainly works, but I would like to know if there is a more elegant (and idiomatic) way of doing it.
Use np.newaxis with ... to add a new axis after your last axis.
c = a * b[..., np.newaxis]
Which is the same as
c = a * b[np.newaxis, :]
You don't need to allocate space for c in advance btw.