【发布时间】:2014-12-20 03:08:38
【问题描述】:
我正在使用 Python 2.7 和 NumPy 处理大型布尔值数组。
我有一个数组 A,是这样的:
>>> A
array([[[False, False, True, True, True],
[False, False, False, True, True],
[False, False, True, True, True],
[False, False, False, True, True],
[False, False, False, False, True]],
[[False, True, True, True, True],
[False, True, True, True, True],
[False, False, True, True, True],
[False, True, True, True, True],
[False, False, True, True, True]]])
我必须把它变成一个布尔数组,像这样:
>>> B
array([[[True, False, True, True, True],
[True, True, False, True, True],
[True, False, True, True, True],
[True, True, False, True, True],
[True, True, True, False, True]],
[[False, True, True, True, True],
[False, True, True, True, True],
[True, False, True, True, True],
[False, True, True, True, True],
[True, False, True, True, True]]])
所以想法是每行的最后一个False 值应该保留,任何其他值都应该变成True。
我需要创建它才能将其用作另一个数组的掩码。
有没有办法使用 NumPy 而不使用 for 循环(非常慢)?
【问题讨论】:
-
这是一个奇怪的转换 - 除了最后一个 False 值的索引之外,您基本上会丢失所有信息。这有什么意义?
-
@Marcin 正如我在问题中所写,我需要使用生成的数组作为另一个 numpy 数组的掩码。
标签: python arrays numpy boolean vectorization