【问题标题】:Is there a simple way to pass one or two np.arrays to a function without splatting an array?有没有一种简单的方法可以将一个或两个 np.arrays 传递给一个函数而不会溅出一个数组?
【发布时间】:2021-11-22 11:02:24
【问题描述】:

我有一个函数需要能够接受一个或两个数组,转换它们,然后返回转换后的数组

是否有替代 function(*args) 的替代方法,它不会在其第一个维度上解压缩单个 Numpy 数组,或建议的解决方法?

【问题讨论】:

  • 看起来你在函数调用中解压数组,function(array1) 应该可以工作,function(array1, array2) 或任意数量的位置参数。

标签: python arrays numpy iterator args


【解决方案1】:

*args 有什么问题?它可以很好地与列表/数组一起使用而不会飞溅。

def foo(*args):
    print(args)

foo([1])
foo([1], [2])

([1],)
([1], [2])

【讨论】:

    【解决方案2】:

    如何使用可选参数:

    def transformsinglearr(arr):
        #enter code here
    
    def foo(arr1 = None, arr2 = None):
        arr1t = None
        arr2t = None
        if not( arr1 is None) : arr1t = transformsinglearr(arr1)
        if not( arr2 is None) : arr2t = transformsinglearr(arr2)
        result = [arr1t, arr2t]
        result = [i for i in result if i] #remove nones
        return result
    

    它比 *args 优雅得多,但它做同样的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 2020-02-16
      • 2011-03-09
      相关资源
      最近更新 更多