Распутать 1D список обратно в 3D массив - PullRequest
0 голосов
/ 27 августа 2018

В принципе, есть ли способ преобразовать одномерный список, который был "сплющен" с помощью функции numpy.ravel(), в его первоначальную трехмерную форму? Я знаю размеры, и можно спросить, почему я просто не использую исходный 3D-массив, вместо того, чтобы конвертировать его - но есть причины для этого.

Мне просто нужно знать, могу ли я на самом деле создать тот же 3D-массив из 1D-массива, который был создан с использованием numpy.ravel() в 3D-массиве.

В основном 3D-массив был создан так:

import numpy as np

nx = 50
ny = 40
nz = 150

x = np.linspace(1, 51, nx)
y = np.linspace(1, 41, ny)
z = np.linspace(1, 151, nz)

x_bc = x[:, np.newaxis, np.newaxis]
y_bc = y[np.newaxis, :, np.newaxis]
z_bc = z[np.newaxis, np.newaxis, :]

arr = x_bc + y_bc + z_bc

И нет, я не могу просто сделать это, чтобы получить его обратно, так как вычисления были выполнены для него в то же время, а затем преобразованы в одномерный массив в то же время. Таким образом, данные в этом массиве не совпадают с теми, которые я на самом деле хочу преобразовать обратно.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

numpy.reshape делает то, что вы хотите?

0 голосов
/ 27 августа 2018

Просто измените его обратно в исходную форму?

raveled = np.ravel(arr)
new_arr = raveled.reshape(*arr.shape)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...