Adding NumPy and Adding Python

In Python, I can add an empty array, for example:

>>> a = [] >>> a.append([1,2,3]) >>> a.append([1,2,3]) >>> a [[1, 2, 3], [1, 2, 3]] 

How can i do the same in numpy? np.append flattens the array, unfortunately (and I need to have an empty array at the beginning).

+5
source share
3 answers

OP is designed to run with an empty array. So here is one approach using NumPy

 In [2]: a = np.empty((0,3), int) In [3]: a Out[3]: array([], shape=(0L, 3L), dtype=int32) In [4]: a = np.append(a, [[1,2,3]], axis=0) In [5]: a Out[5]: array([[1, 2, 3]]) In [6]: a = np.append(a, [[1,2,3]], axis=0) In [7]: a Out[7]: array([[1, 2, 3], [1, 2, 3]]) 

BUT if you add a large number of loops. It’s faster to add a list first and convert to an array than adding NumPy arrays.

 In [8]: %%timeit ...: list_a = [] ...: for _ in xrange(10000): ...: list_a.append([1, 2, 3]) ...: list_a = np.asarray(list_a) ...: 100 loops, best of 3: 5.95 ms per loop In [9]: %%timeit ....: arr_a = np.empty((0, 3), int) ....: for _ in xrange(10000): ....: arr_a = np.append(arr_a, np.array([[1,2,3]]), 0) ....: 10 loops, best of 3: 110 ms per loop 
+15
source

I think you are looking for vstack :

 >>> import numpy as np >>> a = [1, 2, 3] >>> b = [1, 2, 3] >>> np.vstack((a, b)) array([[1, 2, 3], [1, 2, 3]]) 
+1
source

Using np.append

Let's start with an empty two-dimensional array:

 In [8]: a = np.array([]); a = a.reshape((0, 3)); a Out[8]: array([], shape=(0, 3), dtype=float64) 

Now add a few lines:

 In [19]: a = np.append(a, [[1, 2, 3]], axis=0 ); a Out[19]: array([[ 1., 2., 3.]]) In [20]: a = np.append(a, [[1, 2, 3]], axis=0 ); a Out[20]: array([[ 1., 2., 3.], [ 1., 2., 3.]]) 

Using np.concatenate :

Again, start with an empty two-dimensional array:

 In [28]: a = np.array([]); a = a.reshape((0, 3)); a Out[28]: array([], shape=(0, 3), dtype=float64) 

Now let concatenate some lines:

 In [29]: a = np.concatenate( (a, [[1, 2, 3]]), axis=0 ); a Out[29]: array([[ 1., 2., 3.]]) In [30]: a = np.concatenate( (a, [[1, 2, 3]]), axis=0 ); a Out[30]: array([[ 1., 2., 3.], [ 1., 2., 3.]]) 
0
source

All Articles