将数组映射值的数组返回到python中的参数

时间:2009-11-13 02:24:46

标签: python arrays numpy

我有一些函数可以返回与参数范围相对应的数据数组。

示例:对于2d数组aa_{ij}值对应于参数集(param1_i, param2_j)如何返回结果保持参数值对应?

  • param1_i, para2_j中的每一个调用函数并返回一个值需要很长时间(如果你一次性完成它会效率更高)
  • 将功能分解为(许多)较小的功能并使使用困难? (关键是获取一系列参数的值,1值完全无用)

我能想到的最好的是制作一个新的numpy dtype,例如2d数组:

tagged2d = np.dtype( [('vals', float, 1), ('params', float, (2,))] )

以便a['vals'][i,j]包含值和a['params'][i,j]相应的参数。

有什么想法?也许我应该只返回2个数组,一个是值,另一个是参数元组?

1 个答案:

答案 0 :(得分:2)

我建议你最后一个建议......只需返回两个数组{'values': a, 'params':params}

这有几个原因。

  1. 首先,你的其他解决方案(使用dtype和recarrays)将太多东西缠在一起。例如,从a派生的与相同参数相对应的数量是什么...您是否为此创建了新的重新排列和参数的新副本?即使像2*a这样简单的事情成为显着的数量,也需要你做出艰难的决定。

  2. Recarrays有局限性,这在其他方面很容易解决,因此不值得接受这些限制。

  3. 如果您希望返回的字词之间更容易相互关联,则可以将这些项目放在中。例如,您可以使用一个方法来获取参数对并返回相应的结果。这样,你不会受到重新组合的限制,你仍然可以构建你喜欢的两者之间的任何便利关系,并轻松地向后兼容改变行为等。