I have to perform the same operation on a number of arrays. Is there a way to use a loop in Python to carry out this repetitive task?
For example, I have 5 arrays: A
, B
, C
, D
, and E
.
I want to carry out the following:
A = A[0]
B = B[0]
C = C[0]
D = D[0]
E = E[0]
Is there any way to do this using a loop or some other technique to avoid typing almost the same thing multiple times?
My question has been marked as a duplicate of this question. There, the person is asking how to extract the first element from each list (or in my case array). I am not simply trying to extract the first element. I actually want to replace each array with it's first element -- literally A = A[0]
.
Some are saying this is not a good idea, but this is actually what I want to do. To give some context, I have code that leaves me with a number of 2D arrays, with shapes n
x m
. When n = 1
, the first dimension is irrelevant, and I would like to dispense with that dimension, which is what A = A[0]
does. My code needs to handle both cases where n = 1
and cases when n > 1
.
In other words, when n = 1
, my code results in an array A
that is of the following form: A = array([[a]])
, and I want to change it so that A = array([a])
. And to reiterate, I need the flexibility of allowing n > 1
, in which case A = array([[a1],[a2],...])
. In that case, my code will not execute A = A[0]
.
The solution by Mark White below works, if you change the last line to:
A,B,C,D,E = [x[0] for x in [A,B,C,D,E]]
What's interesting is that this solution makes the code more compact, but actually involves as many characters as (an technically more than) the brute force approach.