背景:这个问题使另一个线程中的问题更进一步。
假设我有一个二维数组,其中的列被分成几组。为简单起见,我们可以假设数组包含int
如下值:
np.random.randint(3,size=(2,10))
# Column indices:
# 0 1 2 3 4 5 6 7 8 9
array([[0, 2, 2, 2, 1, 1, 0, 1, 1, 2],
[1, 1, 0, 1, 1, 0, 2, 1, 1, 0]])
作为列索引分区的示例,我们可以选择以下内容:
# Partitioning the column indices of the previous array:
my_partition['first'] = [0,1,2]
my_partition['second'] = [3,4]
my_partition['third'] = [5,6,7]
my_partition['fourth'] = [8, 9]
我想找到具有相同值的列的列索引集的组。在上面的示例中,这些组的一些示例是:
# The following sets include indices for a common column vector with values [2,0]^T
group['a'] = ['first', 'fourth']
# The following sets include indices for a common column vector with values [1,1]^T
group['b'] = ['second', 'third', 'fourth']
我对这个问题的解决方案感兴趣,该解决方案适用于保存实际值的数组(例如,值1.0/2
和1.0/2
相同,即1.0/2 == 1.0/2
返回True
)。
我知道浮动精度的潜在限制,所以简单地说,我分两步处理这个问题:
- 如果值相同,则假设两列相同
- 假设如果值彼此接近,则两列相同(例如,向量差异低于阈值)
我试图在上一个线程中概括解决方案,但我不确定它是否直接适用。我认为它适用于第一个问题(列中的值完全相同),但我们可能需要“一艘更大的船”来解决第二个问题。