我有一个二维数组,大小为76 x 273。
我想在所有273列中搜索“ 0”,并返回不包含“ 0”的列的索引。用python最快的方法是什么?
感谢
答案 0 :(得分:0)
检查所有单元格真的没有更快的方法。如果您的列是第一个索引(即,它为您提供了列:array[0]
),则可以使用all
,它检查可迭代对象中的所有值是否均为True
。因为在Python中,除0以外的所有整数在转换为True
时均算作False
和0算作boolean
,因此可以使用,但仍然不够快,因为仍然需要检查每个单元格。
使用all
:
for i in range(len(array)): # or use 273 instead of len(array)
if not all(array[i]):
print(i, "contains 0")
如果您的第一个索引是该行:
for i in range(273): # or use len(array[0])
for j in range(len(array)): # or use 76
if array[j][i] == 0:
print(i, "contains 0")
请注意,第二种方法的缓存效率较低,但是,如果数据的结构是这样,则实际上没有更好的方法。
如果您想返回包含零的列而不是打印它们,则可以将其存储到列表中,例如:
def zero_cols(array):
output = []
for i in range(273):
for j in range(len(array)):
if array[j][i] == 0:
output.append(i)
return output