从集合中随机选择一个/多个函数并应用组合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从集合中随机选择一个/多个函数并应用组合相关的知识,希望对你有一定的参考价值。
我有n个功能的列表:f1(),f2()..fn()
等,需要随机选择n个,然后依次将其中一个/多个应用于对象。用Python的方式可以做到这一点?
用例是从一组图像中生成图像增强(用于训练ML模型),并将(一个/多个)增强功能应用于图像。
答案
[functools.reduce(lambda acc, f: f(acc), random.sample(funs, n), image)
怎么样?
另一答案
假设我理解可以使用reduce来完成的问题。
假设:
- 您具有功能列表f1,... fN
- 您想随机选择一个子列表,说出k个。
- 您要按顺序将子列表应用于对象
使用reduce的解决方案>]
from functools import reduce #from numpy.random import choice # use if your Python < 3.6 from random import choices # available in Python 3.6+ # Define function on object (number in this case) # included print so we can see each function being called def f1(x): print("func1 x + 1: {} -> {}".format(x, x+1)) return x + 1 def f2(x): print("func2 x * 2: {} -> {}".format(x, x*2)) return x * 2 def f3(x): print("func3 x % 2: {} -> {}".format(x, x%2)) return x % 2 def f4(x): print("func4 x - 5: {} -> {}".format(x, x-5)) return x - 5 def f5(x): print("func5 x / 2: {} -> {}".format(x, x/2)) return x / 2 def f6(x): print("func6 x * 3: {} -> {}".format(x, x/2)) return x / 2 def f7(x): print("func7 x * 5: {} -> {}".format(x, x/2)) return x / 2 def f8(x): print("func8 x / 10: {} -> {}".format(x, x/2)) return x / 2
#将功能应用于对象的功能def apply_func(x,f):返回f(x)
# List of functions funcs = [f1, f2, f3, f4, f5, f6, f7, f8] # Test (choose 3 functions at random) random_funcs = choices(funcs, k = 3) # Apply the functions to object (value 1) obj = 1 answer = reduce(apply_func, random_funcs, obj) print('Answer:', answer)
示例输出
func1 x + 1: 3 -> 4
func7 x * 5: 4 -> 2.0
func4 x - 5: 2.0 -> -3.0
Answer: -3.0
以上是关于从集合中随机选择一个/多个函数并应用组合的主要内容,如果未能解决你的问题,请参考以下文章