【问题标题】:overloading a float to a numpy array将浮点数重载到 numpy 数组
【发布时间】:2013-09-13 11:28:48
【问题描述】:

我有一个函数,处理一维 numpy 数组,如下所示:

def f(arr):
    arr=asarray(arr)
    #process data as numpy array
    #...
    return arr

使用asarray,我允许调用带有f([4,5,6]) 列表的函数。现在,我想将参数“重载”为单个浮点数,以便我可以使用 f(4) 而不是 f([4])

这是一个标准的 numpy 功能,因为您可以将 np.sin 称为 sin(array([4,5,6]))sin([4,5,6])sin(4)。我想出了这段代码,至少在简单的情况下有效:

def f(arr):
    arr=asarray(arr)
    if arr.shape is ():
        print 'arr is a single float/int/etc'
        arr = array([arr])
    #process data as numpy array
    #...
    return arr

这是标准/正确的做法吗?

【问题讨论】:

    标签: python arrays numpy overloading


    【解决方案1】:

    我相信你正在寻找np.atleast_1d

    >>> np.atleast_1d(5)
    array([5])
    >>> np.atleast_1d(np.arange(2))
    array([0, 1])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-12
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      相关资源
      最近更新 更多