Cara untuk "memulai" array yang Anda inginkan adalah:
arr = np.empty((0,3), int)
Yang merupakan array kosong tetapi memiliki dimensi yang tepat.
>>> arr
array([], shape=(0, 3), dtype=int64)
Maka pastikan untuk menambahkan sepanjang sumbu 0:
arr = np.append(arr, np.array([[1,2,3]]), axis=0)
arr = np.append(arr, np.array([[4,5,6]]), axis=0)
Tapi, @jonrsharpe benar. Bahkan, jika Anda akan menambahkan dalam satu lingkaran, itu akan jauh lebih cepat untuk menambahkan ke daftar seperti pada contoh pertama Anda, kemudian konversikan ke array numpy pada akhirnya, karena Anda benar-benar tidak menggunakan numpy sebagai dimaksudkan selama loop:
In [210]: %%timeit
.....: l = []
.....: for i in xrange(1000):
.....: l.append([3*i+1,3*i+2,3*i+3])
.....: l = np.asarray(l)
.....:
1000 loops, best of 3: 1.18 ms per loop
In [211]: %%timeit
.....: a = np.empty((0,3), int)
.....: for i in xrange(1000):
.....: a = np.append(a, 3*i+np.array([[1,2,3]]), 0)
.....:
100 loops, best of 3: 18.5 ms per loop
In [214]: np.allclose(a, l)
Out[214]: True
Cara numpythonic untuk melakukannya tergantung pada aplikasi Anda, tetapi itu akan lebih seperti:
In [220]: timeit n = np.arange(1,3001).reshape(1000,3)
100000 loops, best of 3: 5.93 µs per loop
In [221]: np.allclose(a, n)
Out[221]: True