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?
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.
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.
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])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With