Как заставить 2d фигуру для 1d и 2d массивов - PullRequest
1 голос
/ 28 марта 2020

Я получаю эту ошибку при запуске моего кода.

Expected 2D array, got 1D array instead

Я посмотрел это и думаю, что знаю почему, но не уверен, как это исправить. У меня есть 2D-массив в качестве источника, но мне нужно взять указанный c столбец массивов для обработки. Когда я получаю столбцы, двумерный массив превращается в одномерный массив.

Вот мой код:

    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

Первый оператор print дает мне это:

[[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?

1 Ответ

1 голос
/ 28 марта 2020

Когда вы индексируете массив в столбце с помощью:

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

Вы можете просто добавить новую ось в этом индексировании, чтобы убедиться, что ваш результирующий массив является двумерным до reshape:

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

Вот пример использования массива образцов в случае индексации по столбцу:

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

Результатом является 2D-массив, и если мы индексируем по 2 столбцам:

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

Полученный массив также 2D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...