numpy 如何将多个数值数组输入到一个函数并返回多个输出

3htmauhk  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(136)

例如,以下操作可以很好地工作:

import numpy as np
time = np.linspace(0, 3, 4)
func = lambda x : x
print(func(time))

>>> [0, 1, 2, 3]

我想对以向量为输入的函数做同样的处理。例如,我希望发生以下情况:

inps = np.array([[1, 2], [3, 4], [5, 6]])
sum_func = lambda x : x[0] + x[1]
print(sum_func(inps))

>>> [3, 7, 11]

但最终返回的是[3, 3],它只是每列中前两个元素的总和。我怎样才能让我想要发生的事情真的发生?
如果可能的话,我想避免for循环。例如,下面的代码行得通

inps = np.array([[1,2], [3,4], [5,6]])
def func(x):
    vals = []
    for x in x.tolist():
        vals.append(x[0] + x[1])
    return np.array(vals)
print(func(inps))

>>> [3, 7, 11]

但有没有其他方法可以做到这一点?

qgelzfjb

qgelzfjb1#

Numpy包含大量用于操作Numy数组的函数。您应该知道the documentationHere是数学函数的列表。
sum function在这里将派上用场,因为我们想要对每一行求和:

import numpy as np

inps = np.array([[1, 2], [3, 4], [5, 6]])
sum_func = lambda x : np.sum(x, axis=1)
print(sum_func(inps))

>>> [ 3  7 11]

这将沿着对应于行的第一个轴求和(记住,在Python中,我们从0开始计数)。

相关问题