Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

merging/concatenating arrays with different elements

How to merge a mix of different elements (matlab style) in numpy?

[array([ 0.]), 0.0, 0.0011627, 0.0, 2.69, 0.0, array([ 3.8269, 7.0184]), array([ 4.4e-16, 2.1e+00])]

(I tried np.concatenate, but obviously it only takes arrays as input). Basically, I want to dynamically concatenate elements from a vector by indexing. I tried:

 V = np.array([1,2,3,4,5,6])
 Y = np.array([7,8,9,10,11,12])

 Z = np.array([V[0:2],Y[0],V[3],Y[1:3],V[4:],Y[4:]])

It works, but has array elements inside. I just want a flat vector of numbers (Matlab style) as later I make a matrix (called RES) with a bunch of these vectors. Even a simple

 np.savetxt('TT',RES,fmt='%1.1e') 

fails because it expects floats and not arrays inside.

Guess this should be simple. np.hstack does the job. But is there any other easy way to do Matlab style indexing & combining of vectors and scalars?

like image 258
nahsivar Avatar asked Feb 24 '14 14:02

nahsivar


People also ask

How do I combine two arrays of elements?

In order to combine (concatenate) two arrays, we find its length stored in aLen and bLen respectively. Then, we create a new integer array result with length aLen + bLen . Now, in order to combine both, we copy each element in both arrays to result by using arraycopy() function.

Can you concatenate two arrays?

The concat() method concatenates (joins) two or more arrays. The concat() method returns a new array, containing the joined arrays. The concat() method does not change the existing arrays.


1 Answers

You could use np.r_:

In [32]: Z = np.r_[V[0:2],Y[0],V[3],Y[1:3],V[4:],Y[4:]]

In [33]: Z
Out[33]: array([ 1,  2,  7,  4,  8,  9,  5,  6, 11, 12])
like image 59
unutbu Avatar answered Oct 14 '22 07:10

unutbu