【发布时间】:2021-05-06 10:04:52
【问题描述】:
对于聚类问题,我正在尝试创建理想的相似度矩阵。也就是说,我有一个簇标签的一维数组,需要创建一个条目为 1 的二维二进制或布尔矩阵,如果两个数据点属于同一个簇。
为此,我使用np.meshgrid,但它仅适用于较小的示例。这是一个 MWE:
使用大小为 5 的数组,它可以按需要工作:
arr = np.random.randint(0, 10, size=5)
print(arr)
mesh_grid = np.meshgrid(arr, arr, sparse=True)
mesh_grid[0] == mesh_grid[1]
给予
[9 0 9 0 7]
array([[ True, False, False, False, False],
[False, True, False, False, False],
[False, False, True, False, False],
[False, False, False, True, False],
[False, False, False, False, True]])
但是,对于大小为 60000 的数组,它不起作用:
arr = np.random.randint(0, 10, size=60000)
mesh_grid = np.meshgrid(arr, arr, sparse=True)
mesh_grid[0] == mesh_grid[1]
给予
DeprecationWarning: elementwise comparison failed; this will raise an error in the future.
mesh_grid[0] == mesh_grid[1]
设置sparse=False 会引发内存错误。基于this answer,我认为DeprecationWarning也一定是由于内存造成的。
问题:我该如何解决这个问题,或者是否有其他更有效的方法来获得所需的矩阵?
【问题讨论】: