我正在研究一个知识库,如果它们是彼此的子集,我想在其中比较不同的坐标行。如果是,则应在较大的数组上应用右外连接。 例子
knowledgebase = [
[[1,2],[3,4],[5,6]],
[[1,2],[5,6]]
]
我用纯 python 实现了一个解决方案。
for element1 in knowledgebase:
for element2 in knowledgebase:
if element1 == element2:
break
if all(x in element2 for x in element1):
outer_join = [item for item in element2 if item not in element1]
if outer_join not in knowledgebase:
knowledgebase.append(outer_join)
然而,由于嵌套的 for 循环,这种方法会变慢,所以我想知道 Numpy 中是否有类似的东西。
我定义了一个像这样的 numpy 数组。
knowledgebase = np.array([
list([[1,2],[3,4],[5,6]], dtype=object),
list([[1,2],[5,6]], dtype=object)
])
并想将上面的算法应用于它,但我不确定如何以有效的方式进行。也许我在数组中嵌套 python 列表的方法不是最好的方法,但我无法弄清楚如何创建具有不同行长度的 numpy 数组。