我试图将多个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']
如果有人能够帮助我,我们将不胜感激。感谢。
答案 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 format或this one may be clearer。
从您的示例中不清楚,但我在上面的代码中的假设是fcst
是在循环的每次迭代中对应于标签haz
的2D数组。 / p>