让我们看一个例子:
In [7]: import numpy as np
In [8]: cluster = np.random.randint(10, size = (5,2))
In [9]: cluster
Out[9]:
array([[9, 7],
[7, 2],
[8, 9],
[1, 3],
[3, 4]])
In [10]: new_spin = np.array([[1,2]])
In [11]: new_spin == cluster
Out[11]:
array([[False, False],
[False, True],
[False, False],
[ True, False],
[False, False]], dtype=bool)
new_spin == cluster
是一个 dtype 的 numpy 数组bool
。cluster
如果 in 的值等于 中的相应值,则为 True new_spin
。
要new_spin
成为 "in" cluster
,上述布尔数组的一行必须全部为 True。我们可以通过调用all(axis = 1)
方法找到这样的行:
In [12]: (new_spin == cluster).all(axis = 1)
Out[12]: array([False, False, False, False, False], dtype=bool)
new_spin
"in" 也是如此cluster
,如果any
所有行都为真:
In [13]:
In [14]: (new_spin == cluster).all(axis = 1).any()
Out[14]: False
顺便说一句,np.append
这是一个非常慢的操作——比 Python 慢list.append
。如果您避免使用 ,您可能会获得更好的性能np.append
。如果cluster
不是太大,则最好将 cluster 制作为 Python 列表列表 - 至少在您完成附加项目之前。然后,如果需要,使用 . 转换cluster
为 numpy 数组cluster = np.array(cluster)
。