(2023年5月22日至26日,华盛顿州西雅图) - 第一个科学 Python 开发者峰会 为科学 Python 生态系统中的核心开发者提供了一个机会,让他们走到一起,

  1. 改进联合基础设施
  2. 更好地协调核心项目
  3. 制定共同的战略计划

相关笔记/网站

峰会的一个重点是稀疏数组,特别是它们在 SciPy 中的实现。这篇文章试图回顾峰会上“稀疏”方面发生的事情,以及我们持续工作的计划。稀疏数组工作组举行公开后续会议,目前计划每两周举行一次,以保持项目势头并推动项目向前发展。

在峰会上,我们专注于改进 SciPy 中新添加的稀疏数组 API,该 API 允许用户使用 NumPy 语义操作稀疏数据(之前,SciPy 使用 NumPy 的仅限 2D 的 Matrix API,但该 API计划弃用)。我们在峰会上的目标是集中精力,吸引新人加入,并将下游用户与开发工作联系起来。我们还努力为该项目创建一个工作组,使其持续存在,超越峰会本身。

scipy.sparse 中涉及的具体 PR 和问题在2023 年峰会 scipy.sparse 报告中详细说明,更详细的描述出现在峰会工作日志中。一些重要的结论是

  • 重新组织了如何检查矩阵/数组/格式信息。这涉及添加一个描述使用哪种稀疏存储格式的 format 属性,更改函数 issparse/isspmatrix 以及更改类层次结构以允许轻松进行 isinstance 检查。未来的接口包括
    • issparse(A):当为稀疏数组或矩阵时为 True。
    • isinstance(A, sparray):当为稀疏数组时为 True。
    • isspmatrix(A):当为稀疏矩阵时为 True。要检查稀疏数组或矩阵的格式,请使用 A.format == "csr" 或类似方法。
  • 对如何处理稀疏数组的“创建函数”做出了决定。总体方法是引入新的具有 _array 后缀的函数,这些函数构造稀疏数组。旧名称将继续创建稀疏矩阵,直到弃用后删除。一些具体的更改包括
    • 添加创建函数 diags_array(A)(并计划用于 eye_arrayrandom_array 等)。
    • 为稀疏数组的正整数矩阵幂创建 sparse.linalg.matrix_power 函数
  • 在 1D 稀疏数组方面取得了进展。1d 的数据结构可能与 2d 大不相同。原型 coo_array 允许探索可能的 n 维数组,尽管这不是短期目标。
  • 探讨了为稀疏数组定义 __array_ufunc__ 和其他 __array_*__ 协议的可行性和实用性
  • 更清晰地区分了稀疏数组的私有方法和公共方法
  • 改进了稀疏数组的文档

我们的目标是在 SciPy v1.12 之前有足够的时间进行密集测试,以便拥有一个可用的稀疏数组构造函数集和一个 1d 稀疏数组类(首先关注 coo_array)。然后,这将使我们能够专注于创建迁移文档和工具,以及帮助下游库转向稀疏数组。我们希望能够删除弃用的稀疏矩阵接口,以支持数组接口。为了实现这一点,我们需要大多数下游用户转向稀疏数组 API。我们打算帮助他们做到这一点。

我们的工作将继续,每两周的星期五举行社区电话会议。近期工作是

  • 继续改进稀疏创建函数:diags、eye、random 等。
  • 弃用一些特定于矩阵的功能
  • 一般的性能改进
  • 使 scikit-learn 适应支持稀疏数组(将与 scikit-learn 的维护者讨论)