我想搜索我在n x n矩阵中具有的字符串值,以查看它们是否存在于列表中。输出应该是一个n x n矩阵,布尔值为True或False,这取决于是否找到字符串。矩阵和列表如下所示:
matrix = [['aa', 'ba', 'ca'], ['ab', 'bb', 'cb'], ['ac', 'bc', 'cc']]
list = ['ba','cb','dg']
我有此代码:
matrixFound = [[for x in matrix] for y in matrix]
并且我需要以某种方式在元素中包含此语句:
matrix in list
输出应该是这样的矩阵:
[[False,True,False],[False,False,True],[False,False,False]]
我当时正在考虑使用map或lambda解决此问题,但无法正确进行编码。 应该怎么做?可以使用常规的python或numpy。
答案 0 :(得分:2)
您可以使用numpy的isin:
np.isin(matrix,list2)
# array([[False, True, False],
# [False, False, True],
# [False, False, False]])
答案 1 :(得分:1)
使用numpy绝对是微不足道的:
In [1]: import numpy
In [2]: matrix = numpy.array([['aa', 'ba', 'ca'], ['ab', 'bb', 'cb'], ['ac', 'bc', 'cc']])
In [3]: matrix == 'cb'
Out[3]:
array([[False, False, False],
[False, False, True],
[False, False, False]], dtype=bool)
In [4]: search = ['ba','cb','dg']
In [5]: result = numpy.zeros(matrix.shape, dtype='bool')
In [6]: result
Out[6]:
array([[False, False, False],
[False, False, False],
[False, False, False]], dtype=bool)
In [7]: for s in search:
...: result |= matrix == s
...:
In [8]: result
Out[8]:
array([[False, True, False],
[False, False, True],
[False, False, False]], dtype=bool)
答案 2 :(得分:1)
如果要使用列表理解,这是您要查找的代码。
matrixFound = [[x in list for x in y] for y in matrix]
它模拟嵌套循环,其中外部理解会从matrix
中选择一列,而内部理解会检查元素是否在list
中