【问题标题】:Convert multidimensional array elements into same number of arrays将多维数组元素转换为相同数量的数组
【发布时间】:2020-04-24 21:45:45
【问题描述】:

我正在做一个计算机视觉项目,当我尝试更改输入图像矩阵的数据类型时,我收到一个错误'设置具有序列的数组元素'。 我意识到这种情况正在发生,因为我拥有的输入图像矩阵在其所有数组中没有相同数量的元素。有什么方法可以将该输入图像转换为每个数组中元素数量相同的二维数组?

当我尝试执行以下行时出现错误: X_train = X_train.astype('float32')

任何帮助将不胜感激。 干杯。

【问题讨论】:

    标签: pandas numpy machine-learning image-processing computer-vision


    【解决方案1】:

    您需要用零填充元素较少的行,以使其长度等于列表(矩阵)列表中最长数组(或列表)的长度。 下面的代码 sn-p 用于将不等长列表的列表填充到相同行长的矩阵中:

    import numpy as np
    unpadded_matrix = np.array([[1, 2], [3, 4, 5], [6, 7, 8, 9]])
    max_len = max([len(row) for row in unpadded_matrix])
    np.array([row + [0]*(max_len-len(row)) for row in unpadded_matrix])
    

    o/p:

    array([[1, 2, 0, 0],
           [3, 4, 5, 0],
           [6, 7, 8, 9]])
    

    【讨论】:

    • 感谢您的帮助。但现在我收到另一个错误消息,无法与形状 (50,50,3) (0,) 一起广播操作数。 我的 X_train.shape(416286,)
    • 你能发布完整的代码吗?我猜由于与上面讨论的填充问题不同的原因,代码被破坏了。
    • 我掌握的数据是关于检测癌症的。所以我首先加载了未标记的数据并使用符号手动创建了标签。我对 y_train 和 y_test y_train = to_categorical(y_train_labels) y_test = to_categorical(y_test_labels) 使用了一种热编码,但是当执行您提供的以下代码行时,它给了我错误 max_len = max([len(row) for row in X_train]) np.array([row + [0]*(max_len-len(row)) for row in X_train]) 注意:在 X_train 中,我有两个类图像,即有癌症和没有癌症,我手动合并.
    猜你喜欢
    • 2012-02-04
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2023-03-26
    • 2019-06-29
    相关资源
    最近更新 更多