I've been given a multidimensional numpy array, x
that looks like this:
array([ array([ 398.24475098, -196.1497345 , -110.79341125, ..., -1937.22399902,
-6158.89355469, 1742.84399414], dtype=float32),
array([ 32.27750397, -171.73371887, -342.6328125 , ..., -4727.4296875 ,
-4727.4296875 , -2545.10375977], dtype=float32),
array([ 785.83660889, -234.88890076, 140.49914551, ..., -7982.19482422,
-2127.640625 , -1434.77160645], dtype=float32),
...,
array([ 181.93313599, -146.41413879, -416.02978516, ...,
-4517.796875 , 10491.84570312, -6604.39550781], dtype=float32),
array([ -1.37602341e+02, 1.71733719e+02, 7.13068867e+00, ...,
8.60104688e+03, 1.39115127e+04, 3.31622314e+03], dtype=float32),
array([ 453.17272949, 152.49285889, 260.41452026, ...,
19061.60742188, 11232.8046875 , 7312.13964844], dtype=float32)], dtype=object)
I'm trying to access each column (specifically I'm trying to take the standard deviation of each column). I found this answer, and I tried,
>>> x[:,0]
But this returned an error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: too many indices for array
Is it possible to convert this structured array into a simple 2D numpy array to access the columns? Or is there a good way to access these columns directly?
Thanks!
Edit
Some more information on this array:
>>> x.shape
(8685,)
>>> x[0].shape # Same for x[1], x[2], ...
(3524,)
If it's any help, I used the tree2array
function in the root_numpy package to produce this array.
I was able to get things to work with the help of this answer:
How do I convert an array of arrays into a multi-dimensional array in Python?.
>>> y = np.stack(x)
>>> y
array([[ 3.98244751e+02, -1.96149734e+02, -1.10793411e+02, ...,
-1.93722400e+03, -6.15889355e+03, 1.74284399e+03],
[ 3.22775040e+01, -1.71733719e+02, -3.42632812e+02, ...,
-4.72742969e+03, -4.72742969e+03, -2.54510376e+03],
[ 7.85836609e+02, -2.34888901e+02, 1.40499146e+02, ...,
-7.98219482e+03, -2.12764062e+03, -1.43477161e+03],
...,
[ 1.81933136e+02, -1.46414139e+02, -4.16029785e+02, ...,
-4.51779688e+03, 1.04918457e+04, -6.60439551e+03],
[ -1.37602341e+02, 1.71733719e+02, 7.13068867e+00, ...,
8.60104688e+03, 1.39115127e+04, 3.31622314e+03],
[ 4.53172729e+02, 1.52492859e+02, 2.60414520e+02, ...,
1.90616074e+04, 1.12328047e+04, 7.31213965e+03]], dtype=float32)
>>> y[:,0]
array([ 398.24475098, 32.27750397, 785.83660889, ..., 181.93313599,
-137.6023407 , 453.17272949], dtype=float32)
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