如何逐列屏蔽数组列

2024-09-30 16:20:35 发布

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

我有一个如下所示的数组

Table = [[True,  False, False, False, False], 
         [False, False, True,  False, False],
         [True,  False, False, True,  False]]

有没有办法将所有列逐个屏蔽为可屏蔽,最终结果如下

MaskTable = [True, False, True, True, False]

Tags: falsetruetable数组屏蔽办法masktable
2条回答

尝试:

MaskTable = np.any(Table, axis = 0)

输出:

array([ True, False,  True,  True, False])

这将使用numpy.any(),它检查给定轴上的任何值是否计算为True。numpy在这里作为np导入

如果未使用numpy,则可以在列表中使用zip()筛选列:

Filtered = [ [v for v,m in zip(row, MaskTable) if m] for row in Table ]

如果确实使用numpy,则表和遮罩必须是numpy对象:

import numpy as np

Table = np.array([[True,  False, False, False, False], 
         [False, False, True,  False, False],
         [True,  False, False, True,  False]])
MaskTable = np.array([True, False, True, True, False])

Filtered = Table[:,MaskTable]

以上是你在标题中提出的问题的答案

但是,您的示例输出表明,您实际要做的是在矩阵中按列应用OR关系:

MaskTable = np.any(Table,axis=0)

MakTable  = np.logical_or.reduce(Table,axis=0)

相关问题 更多 >