需要将现有的float类型数组转换为比例数组,其中原始数组的最小值对应于新数组中的数字0。原来的0对应0.5。原始的最大值 - 对应于 1。您需要得到一个新数组,其值从 0 到 1 与原始成比例。此外,我不想使用带有循环的明显解决方案。
def interpol(output, min_v, max_v):
if output < 0:
result = (output - min_v)/(0-min_v)*0.5
else:
result = 0.5+(output/max_v)*0.5
return result
有关于地图的想法,但不是因为附加参数。也许有一个优雅的解决方案?
我认为是这样的:
由于这是 NumPy,我们需要使用 NumPy 来完成。结果函数同时处理单个值和任意维度的数组:
如果通过纯Python,那么管道更低,烟雾更薄。创建插值器与使用分开:
您可以只使用内置的 np.where 函数来满足条件: