我有一些函数可以返回与参数范围相对应的数据数组。
示例:对于2d数组a
,a_{ij}
值对应于参数集(param1_i, param2_j)
。 如何返回结果和保持参数值对应?
param1_i, para2_j
中的每一个调用函数并返回一个值需要很长时间(如果你一次性完成它会效率更高)我能想到的最好的是制作一个新的numpy dtype,例如2d数组:
tagged2d = np.dtype( [('vals', float, 1), ('params', float, (2,))] )
以便a['vals'][i,j]
包含值和a['params'][i,j]
相应的参数。
有什么想法?也许我应该只返回2个数组,一个是值,另一个是参数元组?
答案 0 :(得分:2)
我建议你最后一个建议......只需返回两个数组{'values': a, 'params':params}
。
这有几个原因。
首先,你的其他解决方案(使用dtype和recarrays)将太多东西缠在一起。例如,从a
派生的与相同参数相对应的数量是什么...您是否为此创建了新的重新排列和参数的新副本?即使像2*a
这样简单的事情成为显着的数量,也需要你做出艰难的决定。
Recarrays有局限性,这在其他方面很容易解决,因此不值得接受这些限制。
如果您希望返回的字词之间更容易相互关联,则可以将这些项目放在类中。例如,您可以使用一个方法来获取参数对并返回相应的结果。这样,你不会受到重新组合的限制,你仍然可以构建你喜欢的两者之间的任何便利关系,并轻松地向后兼容改变行为等。