从 * args 参数函数中获取两个 numpy 数组,与提供给该函数的完全一样

Get two numpy arrays from an * args parameter function exactly as they were supplied to that function

我一个函数描述如下(非常简化的版本):

def my_func(*args):
    c = other_func(args)
    return c

而other_func定义为:

def other_func(a, b):
    c = a + b
    return c

我还有两个 numpy 数组:

a = [[1.] [2.]]
b = [[2.] [5.]]

我想将 a 和 b 传递给 my_func 并完全按照传递它们的方式检索它们: 我想要的结果是:

c = my_func(a, b)

有:

c = [[3.] [7.]]

但是当我像上面那样调用 my_func 时,我得到这个错误:

TypeError: other_func missing 1 required positional argument: 'b'

我认为问题在于 my_func 无法解压数据。 我查看了一个几乎相似的主题(下面的 link),但它不足以帮助我解决我的问题。另外,我不想使用循环,它对我的​​工作不实用。

Link : How to split list and pass them as separate parameter?

谁能帮我解决这个问题?

提前谢谢你。

换行

c = other_func(args)

c = other_func(*args)

您想遍历 args 列表并解压缩每个数组并将其分别输入到 other_func 中,如下所示:

results = []
for arg in args:
    results.append(other_func(*arg))

给定这 2 (2,1) 个数组,a+b 生成您想要的结果:

In [776]: a = np.array([[1.], [2.]])
     ...: b = np.array([[2.], [5.]])
In [777]: a+b
Out[777]: 
array([[3.],
       [7.]])
In [778]: def my_func(a,b):
     ...:     return a+b
     ...: 
In [779]: my_func(a,b)
Out[779]: 
array([[3.],
       [7.]])

有一定的歧义,因为它们组成的矩阵是对称的

In [780]: np.concatenate((a,b), axis=1)
Out[780]: 
array([[1., 2.],
       [2., 5.]])

添加行或列都会产生 [3,7] 个值。

总体而言,您的问题没有明确说明