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

epa*_*ins 5 python arrays numpy list matrix

这是矩阵列表;

[matrix([[1, 0],
         [1, 0],
         [1, 0],
         [1, 0]]),
 matrix([[0, 0, 0, 0],
         [1, 1, 1, 1]]),
 matrix([[0, 1],
         [0, 1],
         [0, 1],
         [0, 1]]),
 matrix([[0, 0, 0, 0],
         [1, 1, 1, 1]]),
 matrix([[1, 1, 1, 1],
         [0, 0, 0, 0]])]
Run Code Online (Sandbox Code Playgroud)

我想检查矩阵是否已经在列表示例中;

a = matrix([[0, 0, 0, 1],
            [1, 1, 1, 0]])
Run Code Online (Sandbox Code Playgroud)

因此,如果 a 在 m 中,则打印 True,否则打印 False

jpp*_*jpp 4

我假设你正在使用 NumPy。如果是这种情况,请不要使用np.matrix,而使用np.array. np.matrix其存在几乎完全是由于遗留原因,并且具有不良特征。

any您可以与生成器理解一起使用和np.array_equal. 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
Run Code Online (Sandbox Code Playgroud)