In my current research project, I have a list of arrays similar to the one shown bellow:
import numpy as np
[np.array([ 0.00727845, 0.00363923, -0.00976286, -0.00488143]),
np.array([ 0.00493276, 0.00246638, -0.00893927, -0.00446964]),
np.array([ 0.00283457, 0.00141729, -0.00780608, -0.00390304]),
np.array([ 0.00104456, 0.00052228, -0.00649412, -0.00324706]),
np.array([-0.00040696, -0.00020348, -0.00511511, -0.00255755]),
np.array([-0.00151502, -0.00075751, -0.00375973, -0.00187987])]
Here, the length of each individual array is the same. let it e N
Then I need to separate each array in to half and collect them separately.
That is:
list_1 =
[np.array([ 0.00727845, 0.00363923, ]),
np.array([ 0.00493276, 0.00246638, ]),
np.array([ 0.00283457, 0.00141729, ]),
np.array([ 0.00104456, 0.00052228, ]),
np.array([-0.00040696, -0.00020348, ]),
array([-0.00151502, -0.00075751, ])]
list_2 =
np.array([ -0.00976286, -0.00488143]),
np.array([ -0.00893927, -0.00446964]),
np.array([-0.00780608, -0.00390304]),
np.array([ -0.00649412, -0.00324706]),
np.array([ -0.00511511, -0.00255755]),
array([ -0.00375973, -0.00187987])]
I can think of a very lengthy method using for loops to do this but I suppose there is a better way of handling. Appreciate your help
>Solution :
We could use a list comprehension approach here:
import numpy as np
inp = [
np.array([ 0.00727845, 0.00363923, -0.00976286, -0.00488143]),
np.array([ 0.00493276, 0.00246638, -0.00893927, -0.00446964]),
np.array([ 0.00283457, 0.00141729, -0.00780608, -0.00390304]),
np.array([ 0.00104456, 0.00052228, -0.00649412, -0.00324706]),
np.array([-0.00040696, -0.00020348, -0.00511511, -0.00255755]),
np.array([-0.00151502, -0.00075751, -0.00375973, -0.00187987])
]
list_1 = [np.array(x[0:2]) for x in inp]
list_2 = [np.array(x[2:4]) for x in inp]
print(list_1)
This prints:
[array([0.00727845, 0.00363923]),
array([0.00493276, 0.00246638]),
array([0.00283457, 0.00141729]),
array([0.00104456, 0.00052228]),
array([-0.00040696, -0.00020348]),
array([-0.00151502, -0.00075751])]