将多个2d numpy数组放入3d numpy数组中

时间:2017-03-16 15:28:06

标签: python arrays numpy

我试图将多个2-D numpy数组放入一个3-D numpy数组中,然后将3-D numpy数组作为压缩文件保存到目录中供以后使用。

我有一个列表,我将通过它循环计算不同危险的预测。将逐个计算每种危险的预测(129x185 numpy阵列)。我想将每个预测数组放入一个空的129x185x7 numpy数组中。

hazlist = ['allsvr', 'torn', 'sigtorn', 'hail', 'sighail', 'wind', 'sigwind']

# Create 3-D empty numpy array
grid = np.zeros(shape=(129,185,7))

for i,haz in enumerate(hazlist):
    *do some computation to create forecast array for current hazard*
    # Now have 2-D 129x185 forecast array
    print fcst

    # Place 2-D array into empty 3-D array.
    *Not sure how to do this...*

# Save 3-D array to .npz file in directory when all 7 hazard forecasts are done.
np.savez_compressed('pathtodir/3dnumpyarray.npz')

但是,我想给每个预测数组提供它在3-D数组中的网格名称,这样如果我想要某个(如龙卷风),我可以用它来调用它:

filename = np.load('pathtodir/3dnumpyarray.npz')
arr = filename['torn']

如果有人能够帮助我,我们将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

听起来你真的想要使用字典。每个字典条目可以是一个2D数组,引用名称为键:

hazlist = ['allsvr', 'torn', 'sigtorn', 'hail', 'sighail', 'wind', 'sigwind']

# Create empty dictionary
grid = {}

for i,haz in enumerate(hazlist):
    *do some computation to create forecast array for current hazard*
    # Now have 2-D 129x185 forecast array
    print fcst

    # Place 2-D array into dictionary.
    grid[haz] = fcst  # Assuming fcst is the 2D array?

# Save 3-D array to npz file
np.savez_compressed("output", grid)

最好将其另存为JSON文件。如果需要压缩数据,您可以参考此问题并回答saving json in gzipped formatthis one may be clearer

从您的示例中不清楚,但我在上面的代码中的假设是fcst是在循环的每次迭代中对应于标签haz的2D数组。 / p>