Python 如何检查矩阵是否在矩阵列表中

Python 如何检查矩阵是否在矩阵列表中,python,arrays,list,numpy,matrix,Python,Arrays,List,Numpy,Matrix,这是矩阵列表 [矩阵([[1,0], [1, 0], [1, 0], [1, 0]]), 矩阵([[0,0,0,0], [1, 1, 1, 1]]), 矩阵([[0,1], [0, 1], [0, 1], [0, 1]]), 矩阵([[0,0,0,0], [1, 1, 1, 1]]), 矩阵([[1,1,1,1], [0, 0, 0, 0]])] 我想检查一个矩阵是否已经在列表示例中 a=矩阵([[0,0,0,1], [1, 1, 1, 0]]) 因此,如果a在m中,那么print True

这是矩阵列表

[矩阵([[1,0],
[1, 0],
[1, 0],
[1, 0]]),
矩阵([[0,0,0,0],
[1, 1, 1, 1]]),
矩阵([[0,1],
[0, 1],
[0, 1],
[0, 1]]),
矩阵([[0,0,0,0],
[1, 1, 1, 1]]),
矩阵([[1,1,1,1],
[0, 0, 0, 0]])]
我想检查一个矩阵是否已经在列表示例中

a=矩阵([[0,0,0,1],
[1, 1, 1, 0]])

因此,如果a在m中,那么print True,否则print False,我假设您使用的是NumPy。如果是这种情况,请不要使用
np.matrix
,而是使用
np.array
<代码>np。矩阵几乎完全是由于遗留原因而存在的,并且具有不需要的特性

您可以将
any
与生成器一起使用。如果在输入列表中找到该数组,则会短路到
True
,否则返回
False

import numpy as np

L = [np.array([[1, 0], [1, 0], [1, 0], [1, 0]]),
     np.array([[0, 0, 0, 0], [1, 1, 1, 1]]),
     np.array([[0, 1], [0, 1], [0, 1], [0, 1]]),
     np.array([[0, 0, 0, 0], [1, 1, 1, 1]]),
     np.array([[1, 1, 1, 1], [0, 0, 0, 0]])]

A = np.array([[0, 0, 0, 1], [1, 1, 1, 0]])

res = any(np.array_equal(A, i) for i in L)  # False

谢谢,但我已经明白了这一点“弄明白了,最后一行代码应该是“res=any([np.array_equal(A,I)表示L中的I])”不,
res=any(np.array_equal(A,I)表示L中的I)
应该可以正常工作。不建议使用列表理解,因为它需要首先构建一个
列表,这对于此任务来说是不必要的。提问者观察到的任何
不良输出都是使用numpy import*
中的
,或者使用
numpy.any
隐藏内置
any
。这是为什么不使用star导入的主要示例之一。