Python中的逻辑掩码

2024-09-30 01:21:06 发布

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

在Matlab中,大量使用内置的逻辑索引和掩蔽机制是很自然的。如, (1) idx = (A == 2)创建一个与A大小相同的逻辑数组,标识所有等于2的元素,并 (2) C = B(idx)B中提取所有相应的元素,假设AB的大小相同。你知道吗

这种机制是优雅的,非常有效。不管A&;B的维数是多少,它都可以工作。在Matlab中,使用逻辑掩码比用数值方法提取索引更有效。我刚刚开始学习Python,它做的每件事都不同。与标准python3中的(1)和(2)最接近的等价物是什么(不安装NumPy等)?你知道吗


Tags: 方法元素标准数组逻辑内置标识机制
1条回答
网友
1楼 · 发布于 2024-09-30 01:21:06

这将函数应用于集合的所有元素。实现这一点的内置方法是map和理解(map(lambda x: x==2, A)[x==2 for x in A])。如果要将函数应用于随机嵌套的列表,则必须自己扩展map。你知道吗

def is_two(x):  # more readable than the lambda
    return x == 2

def map_nested(fnc, lst):
    if not isinstance(lst, list):
        return fnc(lst)
    return [map_nested(fnc, x) for x in lst]

A = [[1,2,3], [2,3,4], 1, 2]
map_nested(is_two, A)
#[[False, True, False], [True, False, False], False, True]

相关问题 更多 >

    热门问题