我已经获得了一个多维的numpy数组,x
看起来像这样:
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)
我试图访问每一列(特别是我试图获取每列的标准偏差)。我找到了this answer,我试过了,
>>> x[:,0]
但是这返回了一个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: too many indices for array
是否可以将此结构化数组转换为简单的2D numpy数组来访问列?或者有直接访问这些列的好方法吗?
谢谢!
修改
有关此阵列的更多信息:
>>> x.shape
(8685,)
>>> x[0].shape # Same for x[1], x[2], ...
(3524,)
如果有任何帮助,我使用root_numpy包中的tree2array
函数生成此数组。
答案 0 :(得分:0)
不确定你是怎么做的,但它似乎对我有用 直接来自提示
app.set('views', path.join(__dirname, 'views'));
// Set EJS View Engine
app.set('view engine','html');
// Set HTML engine
app.engine('html', require('ejs').renderFile);
答案 1 :(得分:0)
“或者有直接访问这些列的好方法吗?” - 是的,有!
假设您想要获取此数组的第i列而不先将其转换为2D数组(但这是更清洁的方法)。
>>> col = np.array([row[i] for row in x])
但是,我建议首先将其转换为2D数组,如下所示:
columns = x[0].shape[0] # Note: Number of elements in each array should be the same
rows = len(x)
x_flat = x.flatten()
x_2d = x_flat.reshape((rows, columns))
col = x_2d[:, i]
答案 2 :(得分:0)
答案 3 :(得分:0)
在这个答案的帮助下,我能够把事情搞定了:
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)