np.append is not a good function. Better to use concatenate or one of the stacks. Better yet, do a list append, with a concatenate at the end. And collect (1,2) arrays:
In [400]: a = np.array([[0.5], [0.5]]).T
In [401]: x = []
In [402]: for i in range(0,6):
...: x.append(a+np.random.randn(1,2)/np.sqrt(5))
...:
In [403]: x
Out[403]:
[array([[ 0.53535176, 0.43666667]]),
array([[ 0.25599309, 1.48571245]]),
array([[ 0.82575401, 0.90599888]]),
array([[ 0.38033551, 0.54522437]]),
array([[ 0.41806277, 0.86227303]]),
array([[ 0.25251664, 0.36236433]])]
In [404]: X=np.concatenate(x, axis=0)
In [405]: X
Out[405]:
array([[ 0.53535176, 0.43666667],
[ 0.25599309, 1.48571245],
[ 0.82575401, 0.90599888],
[ 0.38033551, 0.54522437],
[ 0.41806277, 0.86227303],
[ 0.25251664, 0.36236433]])
The loop can also be written as a list comprehension (as suggested in a comment).
If you created (2,) elements rather than (1,2) you could use np.array(x) to assemble the 2d array.
In [406]: a = np.array([0.5,0.5])
In [407]: x = [a+np.random.randn(2)/np.sqrt(5) for _ in range(6)]
In [408]: x
Out[408]:
[array([ 0.26945613, 0.90210773]),
....
array([ 0.76008067, 0.83912968])]
In [409]: np.array(x)
Out[409]:
array([[ 0.26945613, 0.90210773],
[ 0.96109886, -0.69105254],
[-0.01010202, 0.92225443],
[ 1.01784239, 0.21049822],
[ 0.47476442, 0.08274172],
[ 0.76008067, 0.83912968]])
np.append is supposed to look like a list append, but does a poor job of it. It's better to understand right from the start how a list of arrays can be joined with concatenate.
np.column_stack([np.random.randn(2, 1)/np.sqrt(5) for i in range(0, N)])this works?np.random.rand(2,N)/np.sqrt(5).