在数组列中明智地搜索元素,并返回不包含该元素的列的索引

时间:2018-11-08 14:49:34

标签: python-3.x

我有一个二维数组,大小为76 x 273。

我想在所有273列中搜索“ 0”,并返回不包含“ 0”的列的索引。用python最快的方法是什么?

感谢

1 个答案:

答案 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