(2023年5月22日至26日,华盛顿州西雅图) - 第一个科学 Python 开发者峰会 为科学 Python 生态系统中的核心开发者提供了一个机会,让他们走到一起,
- 改进联合基础设施
- 更好地协调核心项目
- 制定共同的战略计划
相关笔记/网站
峰会的一个重点是稀疏数组,特别是它们在 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_array
、random_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 的维护者讨论)