代码之家  ›  专栏  ›  技术社区  ›  Jsevillamol

创建一组numpy数组

  •  -1
  • Jsevillamol  · 技术社区  · 6 年前

    我想创建一组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 不是哈希类型。我能做什么呢?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Rory Daulton    6 年前

    首先获取常规np.array:

    explored = np.array([[4,9,6,1,2,5], [5,8,3,7,7,9], [2,4,1,6,3,8]])
    

    那么 explored

    np.array([[4,9,6,1,2,5], [5,8,3,7,7,9], [2,4,1,6,3,8]])
    

    然后把它转换成一个集合。但要做到这一点,请将np.array中的每一行转换为一个元组,这样就可以散列了。

    explored_set = {tuple(row) for row in explored}
    

    现在 explored_set

    {(2, 4, 1, 6, 3, 8), (4, 9, 6, 1, 2, 5), (5, 8, 3, 7, 7, 9)}
    

    if tuple(array) in explored_set:
        # processing here
    

    等等。请注意,集合的顺序与np.array的顺序不同,这是典型的。