python - What is the nicest way to weight planes in a numpy array? -
i have following code in w 1d numpy array of compatible dimension, , m 4d array,
i = 0 weight in w: m[:, :, i, :] *= weight += 1 is there nicer way achieve same effect?
you scaling m along axis=2 elements w, 1d array. so, need extend w 2d array np.newaxis/none, align axes between extended version of w m. then, perform element-wise multiplication between these 2 arrays bring in broadcasting vectorized solution, -
m *= w[:,none] if axis=2 of m has length more number of elements in w, need select range along axis=2 in m before multiplying, -
m[...,np.arange(w.size),:] *= w[:,none]
Comments
Post a Comment