将几个SciPy函数记录为采用“scipy.spatial.distance.pdist
返回的精简距离矩阵”。现在,检查显示pdist
返回的是距离矩阵的上部非对角线部分的行主要1D阵列形式。这一切都很好,很自然而且很明显,但它是在任何地方记录或定义的吗?我宁愿不假设任何关于突然改变的数据结构。 (当然,它可能没有很多东西可以改变,但我想有一种可能性就是将数组包装在允许类似矩阵索引的对象中。)
答案 0 :(得分:1)
老实说,对于scipy用户或dev列表来说这是一个更好的问题,因为它是关于scipy的未来计划。
但是,scipy.spatial.pdist
和scipy.spatial.squareform
的文档字符串中都严格记录了该结构。
E.g。 pdist
:
Returns a condensed distance matrix Y. For
each :math:`i` and :math:`j` (where :math:`i<j<n`), the
metric ``dist(u=X[i], v=X[j])`` is computed and stored in the
:math:`ij`th entry.
See ``squareform`` for information on how to calculate the index of
this entry or to convert the condensed distance matrix to a
redundant square matrix.
由于这一点,以及scipy.spatial
中的许多其他功能都希望以这种形式存在距离矩阵,我会严重怀疑它会在没有一些折旧警告和公告的情况下发生变化。
scipy
本身的模块(与scipy的scikits
相对)是相当稳定的,并且在进行更改时会对向后兼容性进行大量考虑(因此,有很多scipy
中遗留下来的“遗骸”:例如,核心scipy
模块只是在几个函数上具有不同的默认值的事实。)。