【问题标题】:Convert function arguments that are floats to numpy array将浮点数的函数参数转换为 numpy 数组
【发布时间】:2014-02-06 16:01:18
【问题描述】:

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

谢谢!

【问题讨论】:

  • 出于兴趣,这个有什么用例?
  • 财务/现金流功能。参数将是财务参数,例如首付百分比、贷款期限等。

标签: python arrays numpy


【解决方案1】:

这个怎么样:

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)

整个方法让我觉得有点奇怪。希望看到一个令人信服的用例。

【讨论】:

  • 谢谢,这正是我所需要的。我同意这种方法很尴尬,程序流程仍在计划中。用途是在一个 numpy 数组中计算多行消费者的现金流,而无需使用 for 循环。传递的一些参数对于所有消费者(标量)都是相同的,有些是特定于每个消费者(数组)的。
猜你喜欢
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 2018-09-25
  • 2021-12-28
  • 2011-07-18
  • 1970-01-01
相关资源
最近更新 更多