python - 将 1D 列表解开回 3D 数组
问题描述
基本上,有没有办法将通过numpy.ravel()
函数“展平”的 1D 列表转换回其原始 3D 形式?我知道尺寸,有人可能会问为什么我一开始就不使用原始 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
不,我不能仅仅这样做来取回它,因为同时已经对其进行了计算,然后同时也转换为一维数组。所以这个数组中的数据与我实际想要转换回来的数据不同。
解决方案
只是将它重新塑造回原来的形状?
raveled = np.ravel(arr)
new_arr = raveled.reshape(*arr.shape)