Reputation: 914
How do you store an entire array into another array
suppose I have an array
data = np.array([], dtype=float, ndmin=2)
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
How do you store the values such that
data = [ [1,2,3],
[4,5,6] ]
My current method is
data= np.append(data, a)
data= np.append(data, b)
However this results in [ 1,2,3,4,6]
Upvotes: 2
Views: 12922
Reputation: 22215
You mean like:
>>> data = np.array([a,b])
>>> data
array([[1, 2, 3],
[4, 5, 6]])
If you want to do it stepwise, you can use append, but you need to make sure all your arguments are rank 2 (or wrapped in a list). Right now, a
and b
are both rank 1 so if you try to append along a particular axis, you'll get an error. I.e. what you need to do is:
>>> data = np.empty([0,3]); data
array([], shape=(0, 3), dtype=float64)
>>> data = np.append(data, np.array([a]), axis=0); data
array([[ 1., 2., 3.]])
>>> data = np.append(data, np.array([b]), axis=0); data
array([[ 1., 2., 3.],
[ 4., 5., 6.]])
data
are known (say, 100), you're probably better off preallocating, i.e. initializing it as np.empty([100,3])
and filling by index, (e.g. data[0,:] = a
)
Upvotes: 1
Reputation: 42748
So you are looking for np.vstack
:
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
data = np.vstack([a,b])
Upvotes: 3