使用numpy数组作为lambda参数?

2024-05-18 06:53:01 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种合理的方法可以在一条线上完成以下任务?我真的希望避免创建临时变量或单独的函数。在

import numpy as np
x = np.array([1,2,3,4,5])
x = np.ma.masked_where(x>2, x)

我试过了

^{pr2}$

但是地图对象不是我想要的吗?当然,我可以定义单独的函数,避免赋值变量:

masker = lambda x: np.ma.masked_where(x>2, x)
x = masker(np.array([1,2,3,4,5]))

Tags: 对象方法函数importnumpy定义asnp
3条回答

您根本不需要map,只需要一个匿名函数。您所要做的就是用函数调用中的参数绑定替换对x的初始赋值。在

import numpy as np
# x = np.array([1,2,3,4,5])
# x = np.ma.masked_where(x>2, x)

x = (lambda x: np.ma.masked_where(x>2, x))(np.array([1,2,3,4,5]))

这对我来说很好,而且是一条线:

>>> x = (lambda y: np.ma.masked_where(y>2, y))(np.array([1,2,3,4,5]))
>>> print (x)
[1 2      ]
>>>

下面是一种使用map完成此操作的方法:

import numpy as np

x = map(
    np.ma.masked_where, 
    *(np.array([1,2,3,4,5])>2, np.array([1,2,3,4,5]))
)

Map返回一个iterable,因此要查看掩蔽,请如下所示:

^{pr2}$

相关问题 更多 >