如何在numpy数组上映射函数(而不是将函数应用于数组)

时间:2018-07-29 16:23:00

标签: python arrays numpy

尝试映射函数时

def make_pair(a,b):
    return (a,b)

到一个numpy数组

arr = np.array([1,2,3])

我打算做

np.array([make_pair('foo',x) for x in arr])

,但是我read

在较新版本的numpy中,您可以通过将numpy数组传递给为标量类型编写的函数来简单地调用该函数

我尝试将函数make_pair直接应用于数组(res = make_pair('foo',arr)),但是无法获得预期的结果(将其映射到数组上)。在下面的代码中:

import numpy as np

def make_pair(a,b):
    return (a,b)

arr = np.array([1,2,3])

res_0 = np.array([('foo',1), ('foo',2), ('foo',3)])

res_exp = np.array([make_pair('foo',x) for x in arr])

res = make_pair('foo',arr)

我知道了

>>> res
('foo', array([1, 2, 3]))

该函数将应用于数组arr而不是映射到数组中(由于模棱两可)。

有没有一种方法可以告诉numpy映射函数,而不是将函数应用于数组? (除了通过列表理解从外部进行映射外,如图所示)

这是Python 3.6.5和最新的numpy的版本,截至2018年7月为Ubuntu 18.04。

0 个答案:

没有答案