2024-09-30 16:20:35 发布
网友
我有一个如下所示的数组
Table = [[True, False, False, False, False], [False, False, True, False, False], [True, False, False, True, False]]
有没有办法将所有列逐个屏蔽为可屏蔽,最终结果如下
MaskTable = [True, False, True, True, False]
尝试:
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)
尝试:
输出:
这将使用numpy.any(),它检查给定轴上的任何值是否计算为True。numpy在这里作为np导入
如果未使用numpy,则可以在列表中使用zip()筛选列:
如果确实使用numpy,则表和遮罩必须是numpy对象:
以上是你在标题中提出的问题的答案
但是,您的示例输出表明,您实际要做的是在矩阵中按列应用OR关系:
或
相关问题 更多 >
编程相关推荐