我正在使用Python研究一些分子动力学,并且数组往往变得非常大。快速检查某些向量是否出现在数组中会很有帮助。 在寻找方法之后,我惊讶地发现这个问题似乎没有出现。 特别是, 如果我有类似
的东西import numpy as np
y = [[1,2,3], [1,3,2]]
x = np.array([[1,2,3],[3,2,1],[2,3,1],[10,5,6]])
我想知道y中的特定向量是否存在于x(不仅仅是元素)中,我该怎么做? 使用像
这样的东西for i in y:
if i in x:
print(i)
将简单地返回包含至少一个i元素的每个y数组向量。 想法?
答案 0 :(得分:1)
如果要检查数组中是否存在y
中的所有向量,可以尝试:
import numpy as np
y = [[1,2,3], [1,3,2]]
x = np.array([[1,2,3],[3,2,1],[2,3,1],[10,5,6]])
all(True if i in x else False for i in y)
# True
答案 1 :(得分:0)
你没有明确地给出你期望的输出,但我推断你只想看到[1,2,3]作为该程序的输出。
如果你只是将x作为另一个列表而不是NumPy数组,那么你得到那个输出。
答案 2 :(得分:0)
最佳策略取决于尺寸和数量。快速解决方案是
[np.where(np.all(x==row, axis=-1))[0] for row in y]
# [array([0]), array([], dtype=int64)]
结果列表为y中的每一行提供x行中可能为空的位置数组。