将 1D 列表分解回 3D 数组

Den*_*ang 0 python arrays numpy

基本上,有没有办法将通过函数“展平”的 1D 列表转换numpy.ravel()回其原始 3D 形式?我知道尺寸,有人可能会问为什么我一开始就不使用原始 3D 数组,而是转换它 - 但这是有原因的。

我只需要知道是否真的可以从使用 3D 数组创建的 1D 数组创建相同的 3Dnumpy.ravel()数组。

基本上 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
Run Code Online (Sandbox Code Playgroud)

不,我不能只是这样做来取回它,因为同时已经对其进行了计算,然后同时也转换为一维数组。所以这个数组中的数据与我实际想要转换回来的数据不一样。

DYZ*_*DYZ 5

直接把它改回原来的形状就可以了吗?

raveled = np.ravel(arr)
new_arr = raveled.reshape(*arr.shape)
Run Code Online (Sandbox Code Playgroud)