gpt4 book ai didi

python - Python中如何过滤掉全为0的列?

转载 作者:太空狗 更新时间:2023-10-29 21:27:03 24 4
gpt4 key购买 nike

我有一些结构需要过滤。有没有办法在 Python 中很好地做到这一点?

我有一个丑陋的方式来做这件事,但我想清理它:

original_header = ['a','b','c']
original_rows = [[1,0,1], [0,0,0], [1,0,0]]

processed_header, processed_rows = some_cool_utility(original_header, original_rows)

assert_equals(['a', 'c'], processed_header)
assert_equals([[1,1], [0,0], [1,0]], processed_rows)

最佳答案

original_header = ['a','b','c']
original_rows = [[1,0,1], [0,0,0], [1,0,0]]

#transpose rows to get columns
columns = zip(*original_rows)

#build list which is true if the column should be kept (is not a column of all zeros)
not_all_zero = [ any(x) for x in columns ]

#filter the lists based on columns
processed_header = [x for i,x in enumerate(original_header) if not_all_zero[i] ]
processed_columns = [ x for i,x in enumerate(columns) if not_all_zero[i] ]

#transpose the remaining columns back into rows.
processed_rows = zip(*processed_columns)

print (processed_header) #['a', 'c']
print (processed_rows) #[(1, 1), (0, 0), (1, 0)]

请注意,这会返回一个元组 列表,而不是一个列表列表。如果你真的需要一个列表列表,你可以 processed_rows = map(list, processed_rows)

关于python - Python中如何过滤掉全为0的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12005797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com