【问题标题】:How to force a 2d shape for both 1d and 2d arrays如何为 1d 和 2d 数组强制使用 2d 形状
【发布时间】:2020-07-08 16:03:46
【问题描述】:

运行代码时出现此错误。

Expected 2D array, got 1D array instead

我查了一下,我想我知道为什么,但不知道如何解决它。我有一个二维数组作为源,但我需要获取数组的特定列进行处理。当我将列取出时,二维数组变成一维数组。

这是我的代码:

    print(dataframe)
    location = orginalDataframe.columns.get_loc(item) #get the location of the current numberic item
    print(dataframe[:, location])
    dataframe[item] = scaler.inverse_transform(dataframe[:,location]) #reverse previous transformation

第一个打印语句给了我这个:

[[0.96570218]
 [0.96570218]
 [1.        ]
 [1.        ]
 [0.86415196]
 [0.86415196]
 [0.82511791]
 [0.82511791]]

2D,但在我执行dataframe[:, location]) 命令后,它变成了这样:

[0.96570218 0.96570218 1.         1.         0.86415196 0.86415196
 0.82511791 0.82511791 0.91828023 0.91828023 0.76760661 0.76760661
 0.69375734 0.69375734 0.70177708 .. ]

在我当前的示例中,这里只有一列,但对于其他列,则有多列。不管有多少列,如何将列保持为 2D?

【问题讨论】:

    标签: python pandas numpy scikit-learn


    【解决方案1】:

    当您在列上索引数组时:

    location = orginalDataframe.columns.get_loc(item)
    dataframe[:, location]
    

    您可以在该索引上添加一个新轴,以确保您的结果数组是二维的,通过reshape

    dataframe[:, location].reshape(-1, 1)
    

    这是一个使用示例数组的示例,在列索引的情况下:

    a[:,3].reshape(-1, 1).shape
    # (15, 1)
    

    结果是一个二维数组,如果我们索引 2 列:

    a[:,[3,4]].reshape(-1,1).shape
    # (30, 1)
    

    生成的数组也是二维的

    【讨论】:

    • 它只有一个轴是的,它增加了一个@Lostsoul
    • 它只是增加了一个新维度。你可以squeeze它恢复原来的形状@Lostsoul
    • 谢谢它的工作,我做了比较 = dataArray == dataframe equal_arrays = compare.all() print(equal_arrays)。返回真!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2017-07-29
    • 2021-10-24
    • 2021-08-06
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多