2014-02-06 23 views
2

我想在python中向量化一个函数。我希望函数的参数能够作为标量(浮点数,整数等)或作为numpy数组传递。对于作为标量传递的参数,它们应该以指定长度的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.,

+1

出于兴趣,这有什么用途? – NPE

+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) 

整个做法让我觉得有点奇怪。很想看到一个令人信服的用例。

+0

谢谢,这是我所需要的。我同意这种做法很尴尬,程序流程仍在计划中。用途是计算numpy数组中几行消费者的现金流,而不必使用for循环。通过的一些参数对所有消费者(标量)都是一样的,有些参数对每个消费者(数组)都是特定的。 –