【问题标题】:ValueError: setting an array element with a sequence. How to re-arrange my features to np.arrays?ValueError:使用序列设置数组元素。如何将我的功能重新排列到 np.arrays?
【发布时间】:2021-03-17 08:50:34
【问题描述】:

我有一些像这样的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.

【问题讨论】:

  • 目前您有一个数组列表并且想要一个列表数组?为什么不是二维数组?为什么不是一维数组,其中第一个 X 元素是您的第一个数组的特征等?为什么不向我们展示分类器,以便我们更好地理解正确的方式是什么?您列出了 python 2 和 3。如果您不针对特定版本,只需保留 python 标记。如果这是关于机器学习的,请添加任何相关标签。
  • 我想要一个类似np.array([....],[.....],[....])的 np.array
  • 是的,您在问题中说了很多。但我不明白你为什么要做这样的事情。您在问题中的构造和您想要的结果都可以类似地迭代/访问。
  • 好吧,基本上我想先做一个 PCA(然后我会打破它来训练和测试使用分类器)。所以我想做这样的事情pca = PCA(n_components=2)f2d= pca.fit_transform(features)
  • 我修正了正文,让我想要的更清楚。

标签: python python-3.x python-2.7 numpy numpy-ndarray


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    X: Xarray-like, shape (n_samples, n_features) 训练数据,其中 n_samples 是样本数,n_​​features 是样本数 功能。

    因此,在您的情况下,您希望通过以下方式将 1D ndarray 列表转换为 2D ndarray

    features = np.array(features)

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

    【讨论】:

      猜你喜欢
      • 2020-02-28
      • 2011-06-08
      • 2018-08-04
      • 2019-08-04
      相关资源
      最近更新 更多