代码之家  ›  专栏  ›  技术社区  ›  Aurélien Pierre

Numpy快速布尔交互矩阵

  •  -1
  • Aurélien Pierre  · 技术社区  · 2 年前

    我有两个整数向量,一个很长 document (1E5到1E7元素),还有一个相当短 query (通常为5-8个元素)。我想创建一个2D布尔矩阵 (i, j) 这使得 1 哪里 document[i] == query[j] 否则 0 。例如:

    文档\查询 5. 2. 4.
    2. 0 1. 0
    8. 0 0 0
    3. 0 0 0
    4. 0 0 1.
    ...

    有没有一种快速的方法来使用Numpy,即不使用Python循环?(此处不能使用熊猫)

    1 回复  |  直到 2 年前
        1
  •  3
  •   Axel Donath    2 年前

    你可以利用numpy广播:

    import numpy as np
    
    document = np.random.randint(0, 5, (10,))
    query = np.array([2, 3, 5])
    
    (document[:, np.newaxis] == query)
    

    打印内容:

    array([[False, False, False],
           [False, False, False],
           [False,  True, False],
           [False, False, False],
           [False, False, False],
           [False,  True, False],
           [ True, False, False],
           [False, False, False],
           [False, False, False],
           [ True, False, False]])
    

    我希望这能回答你的问题!