ValueError: setting an array element with a sequence. How to re-arrange my features to np.arrays?

ValueError: setting an array element with a sequence. How to re-arrange my features to np.arrays?

我有一些 features 看起来像这样

[array([-725.91003  ,   51.094467 ,   14.295977 , ...,   -1.7903049,
          -1.7903049,   -1.7903049], dtype=float32),
 array([-7.5625812e+02,  7.8090454e+01, -2.7161818e+00, ...,
        -4.3733236e-01, -4.3733236e-01, -4.3733236e-01], dtype=float32),
 array([-748.3388   ,   73.042336 ,    3.2872062, ...,    0.7631229,
           0.7631229,    0.7631229], dtype=float32),
 array([-727.7924   ,  104.6542   ,    5.8776445, ...,   -1.7250983,
          -1.7250983,   -1.7250983], dtype=float32),
 array([-626.4832   ,   49.174232 ,  -17.049093 , ...,   -1.8033456,
          -1.8033456,   -1.8033456], dtype=float32),
 array([-7.2422760e+02,  1.0093343e+02,  1.8611973e+01, ...,
         5.7193387e-01,  5.7193387e-01,  5.7193387e-01], dtype=float32),
 array([-7.6023083e+02,  7.8462936e+01, -7.6474414e+00, ...,
         2.0393424e-01,  2.0393424e-01,  2.0393424e-01], dtype=float32),
 array([-732.217    ,  111.95129  ,    7.088293 , ...,   -0.8722699,
          -0.8722699,   -0.8722699], dtype=float32),
 array([-7.2999091e+02,  5.5315689e+01,  6.6589708e+00, ...,
        -5.7534605e-01, -5.7534605e-01, -5.7534605e-01], dtype=float32),
 array([-7.5546600e+02,  7.5549866e+01, -1.7497752e+00, ...,
         1.6348878e-01,  1.6348878e-01,  1.6348878e-01], dtype=float32),
 array([-735.93207  ,   67.90759  ,    5.9061728, ...,   -0.7860311,
          -0.7860311,   -0.7860311], dtype=float32),
 array([-7.5995685e+02,  6.4485733e+01,  5.4719698e-01, ...,
        -4.0942365e-01, -4.0942365e-01, -4.0942365e-01], dtype=float32),
 array([-7.2625726e+02,  7.6061371e+01,  2.1122944e+01, ...,
         6.2402117e-01,  6.2402117e-01,  6.2402117e-01], dtype=float32)]

我怎样才能把它们按正确的顺序排列。我想有一个外np.array,里面的所有数组都要变成列表。我想将此 np.array 放入 PCA。一般来说,我希望它们采用 np.array 格式,但使用正确的方式。

然后我想做类似的事情

pca = PCA(n_components=2)
f2d= pca.fit_transform(features)

如果我用我的初始格式这样做,我会收到一条错误消息

ValueError: setting an array element with a sequence.

根据 documentation fit_transform(X, y=None) 想要:

X: Xarray-like, shape (n_samples, n_features) Training data, where n_samples is the number of samples and n_features is the number of features.

所以在你的情况下你想把你的 1D ndarray 列表变成 2D ndarray 通过:

features = np.array(features)

您不需要将其转换为列表的一维 ndarray

基本上,我找到了问题所在。问题是 features 的每个数组都有不同的长度。因此,如果我这样做 np.array(feautures),这不完全是一个“矩阵”,所以 PCA 无法理解这个对象是什么。

我认为我必须更改我的算法的一些先前部分,以便 feautures 的每个数组具有相同的长度。