将浮动的函数参数转换为numpy数组

时间:2014-02-06 16:01:19

标签: python arrays numpy

我正在尝试在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。])

谢谢!

1 个答案:

答案 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)

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