首页 > 解决方案 > 将 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

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

标签: pythonarraysnumpy

解决方案


只是将它重新塑造回原来的形状?

raveled = np.ravel(arr)
new_arr = raveled.reshape(*arr.shape)

推荐阅读