我正在尝试在python中向量化一个函数。我希望函数的参数能够作为标量(浮点数,整数等)或作为一个numpy数组传递。对于作为标量传递的参数,它们应该作为指定长度的numpy数组广播。
函数的参数随后将在函数中使用,因此需要维护参数的名称。
这是我目前的代码,但它不起作用:
def f(arg1, arg2, length = 4):
arguments = locals()
for name in arguments:
if isinstance(arguments[name], (float,int)) :
eval(name) = np.array([float(arguments[name])] * length)
return arg1,arg2
该函数应该返回:
f(1,2,长度= 4)
=>数组([1.,1.,1.,1。]),数组([2.,2.,2.,2。])
谢谢!
答案 0 :(得分:0)
这个怎么样:
import numpy as np
def f(*args, **kwargs):
length = kwargs.get("length", 1)
ret = []
for arg in args:
if isinstance(arg, (float, int)):
ret.append(np.repeat(arg, length))
else:
ret.append(arg)
return tuple(ret)
print f(1, 2, length=4)
整个方法让我觉得有些奇怪。很想看到一个令人信服的用例。