我正在处理地质数据。数据是框的垂直(z)列的2D(x-y)图,每个框具有与其相关联的多于1个数值参数。随着代码的发展,我需要自由添加/删除框参数(这意味着我现在已经不知道我实际需要多少)。方框的数量因地图而异。因此得到的3D阵列在z方向上呈锯齿状。应用于数据的算法一次只能在一个垂直列的框上工作。
使用numpy / scipy工具表示这样的数据结构的合理方法是什么?我想过一个带有自定义dtype的3D结构化数组。但由于数据固有的锯齿状,它可能会有很多零。
答案 0 :(得分:4)
如果您的代码中的数据是可变的,则不建议使用numpy
。
一种可能的解决方案是创建一个字典,其键是参数。例如,在具有坐标[x1, y1]
和[x2, y2]
的2个框的情况下,您可以定义高度h1
和h2
以及其他常规参数。 / p>
data = {
'boxes': [[x1, y1], [x2, y2]],
'height': [h1, h2],
'general_parameter': [par1, par2]
}
通过这种方式,您可以在需要时添加参数和框:
data['new_parameter'] = [new_par1, new_par2]
如果您想使用numpy
,可以将list
替换为numpy
数组:
import numpy as np
data = {
'boxes': np.array([[x1, y1], [x2, y2]]),
'height': np.array([h1, h2]),
'general_parameter': np.array([par1, par2])
}