Python 如何逐列屏蔽数组列
我有一个如下所示的数组Python 如何逐列屏蔽数组列,python,numpy,Python,Numpy,我有一个如下所示的数组 Table = [[True, False, False, False, False], [False, False, True, False, False], [True, False, False, True, False]] 有没有办法将所有列逐个屏蔽为可屏蔽,最终结果如下 MaskTable = [True, False, True, True, False] 尝试: 输出: array([ True, False
Table = [[True, False, False, False, False],
[False, False, True, False, False],
[True, False, False, True, False]]
有没有办法将所有列逐个屏蔽为可屏蔽,最终结果如下
MaskTable = [True, False, True, True, False]
尝试:
输出:
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)
或
你能用文字解释一下你在寻找什么吗(编辑你的问题)。
MaskTable = np.any(Table,axis=0)
MakTable = np.logical_or.reduce(Table,axis=0)