SciPy路线图¶
本路线图页面仅包含本科学计划未来最重要的想法和需求。有关更详细的路线图,包括每个子包的状态、更多想法、API稳定性等,请参阅 详细的SciPy路线图 。
支持分布式阵列和GPU阵列¶
NumPy已经将其API从其执行引擎中分离出来 __array_function__
和 __array_ufunc__
。这将使本网站的某些部分能够接受分布式阵列(例如 dask.array.Array
)和GPU阵列(例如 cupy.ndarray
),它们实现了 ndarray
接口。目前还不清楚哪些算法会开箱即用,以及当它们这样做时是否会有显著的性能提升。我们希望创建一张地图,显示SciPy API的哪些部分起作用,并随着时间的推移改进对它的支持。
除了使用NumPy协议(如 __array_function__
, we can make use of these protocols in SciPy as well. That will make it possible to (re)implement SciPy functions like, e.g., those in scipy.signal
for Dask or GPU arrays (see NEP 18 - use outside of NumPy )。NumPy在这一领域的功能仍在发展中,参见例如 NEP 37 - A dispatch protocol for NumPy-like modules ,而SciPy是这些功能的重要“客户端”。
性能改进¶
速度的提高、较低的内存使用和并行算法的能力对大多数科学领域和用例都是有益的。我们已经建立了用于多处理的API设计模式-使用 workers
关键字-可以在更多功能中采用的关键字。
允许使用像Pythran这样的加速器,可能是通过Transonic,并使用户更容易使用Numba的 @njit
in their code that relies on SciPy functionality would unlock a lot of performance gain. That needs a strategy though, all solutions are still maturing (see for example this overview )。
最后,许多单独的函数可以针对性能进行优化。 scipy.optimize
和 scipy.interpolate
在这方面特别经常需要功能。
统计增强功能¶
这个 scipy.stats
中列出的增强功能 详细的SciPy路线图 对这个项目特别重要。
改进将概率分布拟合到数据的选项。
扩展假设检验集。特别是,包括方差分析的所有基本变量。
为所有统计测试添加置信区间。
支持更多硬件平台¶
SciPy现在可以持续集成ARM64(或 aarch64
) and POWER8/9 (or ppc64le
), and binaries are available via Miniforge 。现在还可以在这些平台的PyPI上安装轮子(通过 manylinux2014
标准),对这些标准的请求也变得越来越频繁。
此外,拥有IBM Z(或 s390x
)现在可以使用TravisCI,但尚未完成-以及 manylinux2014
到那时,那个平台的轮子也是可能的。最后,解决开放的AIX构建问题将对用户有所帮助。
除实现稀疏矩阵外,还实现稀疏数组¶
稀疏矩阵格式大多是功能完整的,但是主要问题是它们的行为类似于 numpy.matrix
(它将在NumPy中的某个时候被弃用)。我们想要的是稀疏的 阵列 表现得像是 numpy.ndarray
。这一点在https://github.com/pydata/sparse,中正在进行中,它已经进行了相当长的一段时间。初步计划是:
开始依赖于
pydata/sparse
一旦它的特性足够完整(它仍然需要CSC/CSR等效项)并且在性能方面还可以。在文档中指出,对于新代码,用户应该首选
pydata/sparse
在稀疏矩阵上。当NumPy不推荐使用时
numpy.matrix
、供应商或将其作为独立软件包进行维护。