1stcol is not a valid variable name.
In terms of efficiency, this is hard to beat.
In [159]: d = np.array(np.arange(1,20,0.5), ndmin=2)
...: e = np.array(np.random.uniform(0,1,np.shape(d)[1]), ndmin=2)
...: tallmat = np.transpose(np.concatenate((d,e),axis=0))
Simpler expressions for dand e:
d = np.arange(1,20,0.5)[None,:]
e = np.random.uniform(0,1,d.shape)
You can build simpler 1d arrays
In [160]: a = np.arange(1,20,0.5)
...: b = np.random.uniform(0,1,np.shape(d)[1])
, , / . , . , "", , .
1d
np.column_stack((a,b))
np.c_[a,b]
np.stack((a,b),axis=-1)
np.array((a,b).T
d e - (N, 1) :
In [171]: d = np.arange(1,20,0.5)[:,None]
In [172]: e = np.random.uniform(0,1,d.shape)
In [173]: tallmat = np.concatenate((d,e), axis=1)