检查一维numpy数组是否在一维numpy数组列表中,并且无

omhiaaxx  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(199)

我想检查一维numpy数组是否在一维numpy数组列表中,如果条件为None。
我是这样做的:

arr = np.array([1,2])
lst = [np.array([1,2]), np.array([3,4]), None, None]

if list(arr) in [list(i) for i in lst if i is not None]:
    print("Yes")

else:
    print("No")

但是列表和numpy数组的大小可以更大,那么有没有更有效的方法来实现呢?2而不是把每个numpy数组都变成列表。

gtlvzcf8

gtlvzcf81#

你不可能避免通过lst的一次迭代来修改它的元素(numpy数组),但是你可以创建一组元组并存储它,而不是创建一个由numpy数组组成的列表:set_of_arrays_as_tuples = set([tuple(array) for array in lst if array is not None])
然后,检查集合中的存在性的任何后续查询可以在恒定时间而不是线性时间内完成:
tuple(arr) in set_of_arrays_as_tuples

  • 〉正确

相关问题