Преобразование массива Numpy, содержащего другой массив, в один массив - PullRequest
0 голосов
/ 02 мая 2020

"x" - это столбец Pandas кадра данных. Чтобы иметь возможность умножить «x» на Numpy, «A», с размерами формы (2, 2), я преобразовал «x» следующим образом:

x = copy[["x"]].values
x = np.asarray([x, 1.0]).reshape((1, 2))

Затем я умножил преобразованное массив «x» в вышеупомянутом массиве «A» и добавление «K» к результату. (K - это постоянное число = 0,01):

J = x.dot(A).dot(x.T) + K

В результате получается массив "J", который выглядит примерно следующим образом:

array([[array([[0.2531513 ],
       [0.25792632],
       [0.2462218 ],
       ...,
       [3.02035684],
       [3.09856273],
       [3.12451776]])]], dtype=object)

Как видите, массив " J "содержит другой массив. Внутренний массив состоит из 1418 элементов. J:

  1. Длина 1.
  2. Имеет размеры (1,1).

Мне нужно, чтобы J имел размеры ( 1418, 1). Вот что я пытался безрезультатно (с форумов):

  • np.concatenate (J) .ravel ()
  • np.array (J) .flatten ()
  • np.array (J) .ravel ()
  • J.reshape (-1)
  • np.concatenate (J))

Кто-нибудь может помочь? Я просмотрел форумы, но не смог найти ничего, что точно соответствует моим требованиям.

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

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

J = J[0]

Спасибо всем, кто пытался помочь.

0 голосов
/ 02 мая 2020

Кажется, что у вас есть массив объектов, например:

J = np.empty(1,object)
J[:] = [np.arange(1418)]
J >> array([array([   0,    1,    2, ..., 1415, 1416, 1417])], dtype=object)

Таким образом, сначала вы должны преобразовать его в массив чисел, а затем изменить его:

Если вы хотите, чтобы J было (1418,1), используйте следующий код:

np.stack(J).reshape(-1,1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...