Does this solve your loop problem ? I guess if (w1,1) goes to (k*w1,k) (here k = 2), it’s hard to avoid a loop.
import numpy as np 

w1 = np.asarray([1,2,4])
w1.shape = (3,1)

new_w = np.zeros((2*w1.shape[0],2)) 
new_w[:w1.shape[0],0] = w1[:,0]
new_w[w1.shape[0]:,1] = w1[:,0]