【发布时间】:2018-08-11 16:20:35
【问题描述】:
我想创建一组 numpy 数组,然后高效地执行in 操作。
explored = {
np.array([[4,9,6,1,2,5], [5,8,3,7,7,9], [2,4,1,6,3,8]]),
np.array([[1,2,3,1,2,5], [1,2,3,7,7,9], [1,2,3,6,3,8]]),
}
if array in explored: # where array is an np.array
print("the array is already in the set")
else:
explored.append(array)
但解释器抱怨np.array 不是可散列类型。我能做些什么呢?
【问题讨论】:
-
if array in explored:中的array是什么? -
要放入
set,对象必须是不可变的。集合就像字典的键。因此可以使用tuple,但不能使用list。array就像一个列表,其中元素可以更改,因此它没有唯一的“哈希”。 -
明确你想要什么样的
in测试。您显示两个 (2,6) 数组。什么会使另一个数组相同?一样的形状? dtype,精确(整数)值?还是相同的数组对象ID?np.in1d是几个数组set函数之一。np.unique是另一个。
标签: python python-3.x numpy set