更新日志
0.15.1 / 2024-01-10
- 修复了通过支持 Array API 标准中的所有 API 函数而导致 XArray 出现回归的问题。(PR #622 感谢 @hameerabbasi)
0.15.0 / 2024-01-09
- 修复了意外触发
DeprecationWarning
的回归问题。(PR #581 感谢 @hameerabbasi) - 扩展了对
sparse.einsum
的支持 (PR #579 感谢 @HadrienNU) - 通用代码清理 (PR #586 感谢 @MHRasmy, PR #598 感谢 @jamestwebber)
- NumPy 兼容性方面的 Bug 修复 (PR #598 感谢 @hameerabbasi, PR #609 感谢 @Illviljan, PR #620 感谢 @mtsokol)
- GCXS 方面的 Bug 修复 (PR #611 感谢 @EuGig, PR #601 感谢 @jamestwebber)
Array API standard <https://data-apis.org/array-api/latest/>
_ 支持 (PR #612, PR #613, PR #614, PR #615, PR #619, PR #620 感谢 @mtsokol)matrepr
支持稀疏数据显示 (PR #605, PR #606 感谢 @alugowski)。- 使用 Ruff formatter 和 linter 进行大规模代码清理 (PR #617, PR #621 感谢 @hameerabbasi)
- 打包和维护 (PR #616, :commit:
b5954e68d3d6e35a62f7401d1d4fb84ea04414dd
, :commit:dda93d3ea9521881c721c3ba875c769c9c5a79d4
感谢 @hameerabbasi)
0.14.0 / 2023-02-24
- 支持
sparse.einsum
(PR #564 感谢 @jcmgray) - 一些 Bug 修复 (PR #524, PR #527, PR #555 感谢 @hameerabbasi, PR #569, 感谢 @jamestwebber, PR #534, 感谢 @sarveshbhatnagar)
- 一些性能改进 (PR #570, 感谢 @jamestwebber, PR #540, 感谢 @smldub)。
- 杂项维护修复。
0.13.0 / 2021-08-28
sparse.GCXS
改进和变更。(PR #448, PR #450, PR #455, 感谢 @sayandip18)。- 维护修复 (PR #462, PR #466, :commit:
1ccb85da581be65a0345b399e00fd3c325700d95
, :commit:5547b4e92dc8d61492e9dc10ba00175c1a6637fa
:commit:00c0e5514de2aab8b9a0be16b5da470b091d9eb9
, :commit:fcd3020dd08c7022a44f709173fe23969d3e8f7c
, 感谢 @hameerabbasi) - 添加
sparse.DOK.from_scipy_sparse
方法 (PR #464, Issue #463, 感谢 @hameerabbasi)。 - Black 重新格式化 (PR #471, PR #484, 感谢 @GenevieveBuckley, @sayandip18)
- 添加
sparse.pad
(PR #474, Issue #438, 感谢 @H4R5H1T-007) - 切换到 GitHub Actions (:compare:
5547b4e92dc8d61492e9dc10ba00175c1a6637fa..a332f22c96a96e5ab9b4384342df67e8f3966f85
) - 修复了格式转换中的多个 Bug。(PR #504, Issue #503, 感谢 @hameerabbasi)
- 修复了
sparse.matmul
对高维数组的 Bug。(PR #508, Issue #506, 感谢 @sayandip18)。 - 修复了标量转换为 COO 的问题 (Issue #510, PR #511, 感谢 @hameerabbasi)
- 修复了 OOB 内存访问问题 (Issue #515, :commit:
1e24a7e29786e888dee4c02153309986ae4b5dde
感谢 @hameerabbasi) - 修复了标量 COO 数组的逐元素操作问题。(Issue #505, :commit:
5211441ec685233657ab7156f99eb67e660cee86
, 感谢 @hameerabbasi) - 修复了
nnz==0
时标量 broadcast_to 的问题。(Issue #513, :commit:bfabaa0805e811884e79c4bdbfd14316986d65e4
, 感谢 @hameerabbasi) - 向
{zero, ones, full}[_like]
添加 order 参数。(Issue #514, :commit:37de1d0141c4375962ecdf18337c2dd0f667b60c
, 感谢 @hameerabbasi) - 修复 tensordot 类型错误。(Issue #493, Issue #499, :commit:
37de1d0141c4375962ecdf18337c2dd0f667b60c
, 感谢 @hameerabbasi)。
0.12.0 / 2021-03-19
此版本包含许多重大更改。例如,我们实现了 sparse.GCXS
类型及其特化版本 CSR
和 CSC
。我们计划逐步提高它们的性能。
- 对
sparse.GCXS
进行了一些修复和添加 (PR #409, PR #407, PR #414, PR #417, PR #419 感谢 @daletovar) - 能够更改索引 dtype 以获得更好的存储特性。(PR #441, 感谢 @daletovar)
- 对
sparse.DOK
数组进行了一些工作,使其更接近其他格式 (PR #435, PR #437, PR #439, PR #440, 感谢 @DragaDoncila) sparse.GCXS
的CSR
和CSC
特化 (PR #442, 感谢 @ivirshup) 目前,这是一个实验性的、未文档化的 API,可能会发生变化。- 修复了多个 Bug (PR #407, Issue #406)
- 向
sparse.random
添加nnz
参数 (PR #410, 感谢 @emilmelnikov)
0.11.2 / 2020-09-04
- 修复
sparse.dot
在复杂 dtypes 下的TypingError
问题。(Issue #403, PR #404)
0.11.1 / 2020-08-31
- 修复
ValueError
在sparse.dot
中处理极小值时的问题。(Issue #398, PR #399)
0.11.0 / 2020-08-18
- 提升
sparse.dot
的性能。(Issue #331, PR #389, 感谢 @daletovar) - 添加了
sparse.COO.swapaxes
方法。(PR #344, 感谢 @lueckem) - 添加了多轴一维索引支持。(PR #343, 感谢 @mikeymezher)
- 修复了非一维数组的
outer
问题。(Issue #346, PR #347) - 向
sparse.COO.astype
添加casting
关键字参数。(Issue #391, PR #392) - 修复了
sparse.COO
构造函数接受无效输入的问题。(Issue #385, PR #386)
0.10.0 / 2020-05-13
- 修复了将空 DOK 数组转换为 COO 导致 dtype 不正确的问题。(Issue #314, PR #315)
- 将代码格式化程序更改为 black。(PR #284)
- 添加 [
sparse.COO.flatten
] 和outer
。(Issue #316, PR #317)。 - 移除了稀疏数组和密集数组之间的广播限制。(Issue #306, PR #318)
- 实现确定性 dask tokenization。(Issue #300, PR #320, 感谢 @danielballan)
- 改进了致密化相关的测试 (PR #321, 感谢 @danielballan)
- 简化了 Numba 扩展。(PR #324, 感谢 @eric-wieser)。
- 在
astype
中遵守copy=False
(PR #328, 感谢 @eric-wieser)。 - 将 linear_loc 替换为 ravel_multi_index,速度提升 3 倍。(PR #330, 感谢 @eric-wieser)。
- 当
ndim==0
时,tensordot 操作添加错误消息。(Issue #332, PR #333, 感谢 @guilhermeleobas)。 - Sphinx 3.0 和 Numba 0.49 的维护修复,并停止支持 Python 3.5。(PR #337)。
- 修复了 numpy.clip 的签名。
0.9.1 / 2020-01-23
- 修复了使用空列表索引可能导致问题的一个 Bug。(Issue #281, PR #282)
- 将代码格式化程序更改为 black。(PR #284)
- 添加了
sparse.diagonal
和sparse.diagonalize
函数。(Issue #288, PR #289, 感谢 @pettni) - 为 Jupyter 笔记本添加 HTML repr。(PR #283, 感谢 @daletovar)
- 创建新的
sparse.COO
数组时避免复制coords
。 - 为 GCXS 添加 stack 和 concatenate。(Issue #301, PR #303, 感谢 @daletovar)。
- 修复了将函数分派到属性访问时与
__array_function__
不兼容的问题。(Issue #308, PR #309)。 - 为 Numba 添加了构建和镜像
sparse.COO
对象的局部支持。
0.8.0 / 2019-08-26
此版本切换到 Numba 的新类型化列表,并对 CI 基础设施进行了大量后端工作,因此 Linux、macOS 和 Windows 得到了官方测试。它还包括 Bug 修复。
它还增加了对 GCXS 格式的开发中、尚未公开的支持,GCXS 是 CSR/CSC 的泛化。(非常感谢 @daletovar)
- 修复了 size 为 1 且 nnz 为 0 的数组无法广播的 Bug。(Issue #242, PR #243)
- 添加
std
和var
。(PR #244) - 迁移到 Azure Pipelines,支持 Windows、macOS 和 Linux 的 CI。(PR #245, PR #246, PR #247, PR #248)
- 添加
resize
,并修改reshape
,使其在形状与相同大小不对应时引发ValueError
。(Issue #241, Issue #250, PR #256 感谢 @daletovar) - 添加
isposinf
和isneginf
。(Issue #252, PR #253) - 修复 nnz 为 0 时
tensordot
的问题。(Issue #255, PR #256) - 修改
__array_function__
以允许稀疏 XArray。(PR #261, 感谢 @nvictus) - 添加对 GCXS 的尚未公开的支持。(PR #258, 感谢 @daletovar)
- 改进了
__array_function__
。(PR #267, PR #272, 感谢 @crusaderky) - 将所有 Numba 列表转换为类型化列表。(PR #264)
- 既然代码已存在,为何还要重复编写?(PR #277)
- 修复了一些与标量相关的逐元素操作。(PR #278)
- 私有模块应保持私有,测试应包含在包中。(PR #280)
0.7.0 / 2019-03-14
此版本增加了与 NumPy 新的 __array_function__
协议的兼容性,详情请参阅 NEP-18 <https://numpy.com.cn/neps/nep-0018-array-function-protocol.html#coercion-to-a-numpy-array-as-a-catch-all-fallback>
_。
另一个重大变化是我们放弃了对 Python 2 的兼容性。Python 2 用户应使用 0.6.0 版本。
还有一些与填充值相关的 Bug 修复。
这主要是一个由贡献者驱动的版本。
完整的更改列表可在下方找到
- 修复了在
sparse.DOK
和sparse.COO
之间转换时导致填充值丢失的 Bug。(Issue #225, PR #226)。 - 修复了对被错误地视为过于密集的矩阵的警告。(Issue #228, PR #229)
- 修复了 Python 3.7 中的一些警告,此修复是为 Python 3.8 做准备。(PR #233, 感谢 @nils-werner)
- 放弃对 Python 2.7 的支持 (Issue #234, PR #235, 感谢 @hugovk)
- 更清晰的错误消息 (Issue #230, Issue #231, PR #232)
- 重构 requirements.txt 文件。(PR #236)
- 在特定情况下支持归约操作中的填充值。(Issue #237, PR #238)
- 添加
__array_function__
支持。(PR #239, 感谢 @pentschev) - 更整洁的代码!(PR #240)
0.6.0 / 2018-12-19
此版本破坏了向后兼容性。之前,如果将数组馈送到 NumPy 函数中,会尝试致密化数组并应用 NumPy 函数。在大多数情况下,这是一种意外行为,如果数组过大,会在引发 MemoryError
之前耗尽内存。
我们现在改变了这种行为,如果尝试自动致密化数组,将引发 RuntimeError
。要进行致密化,请使用显式的 .todense()
方法。
- 修复了
np.matrix
有时无法转换为COO
的 Bug。(Issue #199, PR #200)。 - 确保
sparse @ sparse
返回稀疏数组。(Issue #201, PR #203) - 使
operator.matmul
在ndim > 2
时与 NumPy 的行为保持一致。(Issue #202, PR #204, PR #217) - 确保
dtype
在使用out
kwarg 时得到保留。(Issue #205, PR #206) - 修复 Windows 上
reduce
中的整数溢出问题。(Issue #207, PR #208) - 禁止自动致密化。(Issue #218, PR #220)
- 添加自动致密化配置,以及用于检查数组是否过于密集的警告配置。(PR #210, PR #213)
- 为 COO 构造函数添加填充值修剪。(PR #221)
0.5.0 / 2018-10-12
- 添加了
COO.real
,COO.imag
和COO.conj
(PR #196)。 - 添加了
sparse.kron
函数 (PR #194, PR #195)。 - 向
COO.reshape
添加了order
参数,使其与np.reshape
协同工作 (PR #193)。 - 添加了
COO.mean
和sparse.nanmean
(PR #190)。 - 添加了
sparse.full
和sparse.full_like
(PR #189)。 - 添加了
COO.clip
方法 (PR #185)。 - 添加了
COO.copy
方法,并更改了COO
的 pickle 方式,使其不包含其缓存 (PR #184)。 - 添加了
sparse.eye
,sparse.zeros
,sparse.zeros_like
,sparse.ones
, 和sparse.ones_like
(PR #183)。
0.4.1 / 2018-09-12
- 如果结果为稀疏数组,则允许混合
ndarray
-COO
操作 (Issue #124, 通过 PR #182)。 - 允许在从 NumPy 数组转换时指定填充值 (Issue #179, 通过 PR #180)。
- 添加了
COO.any
和COO.all
方法 (PR #175)。 COO
的索引现在接受单个一维数组索引 (PR #172)。- 填充值现在可以是除零或
False
之外的其他值 (PR #165)。 - 添加了
sparse.roll
函数 (PR #160)。 - Numba 代码现在释放 GIL。这使得 Dask 中的多线程性能更好 (PR #159)。
- 发生了一些 Bug,为了解决这些问题,
COO.coords.dtype
始终为np.int64
。因此,COO
比以前使用更多的内存 (PR #158)。 - 添加了从磁盘保存和加载
COO
文件的支持 (Issue #153, 通过 PR #154)。 - 支持
COO.nonzero
和np.argwhere
(Issue #145, 通过 PR #148)。 - 允许伪就地操作 (Issue #80, 通过 PR #146)。
COO
现在始终是规范的 (PR #141)。- 改进索引性能 (PR #128)。
- 改进逐元素操作性能 (PR #127)。
- 归约操作现在支持负轴 (Issue #117, 通过 PR #118)。
- 与 NumPy 中
ufunc.reduce
的行为保持一致 (Issue #107, 通过 PR #108)。
0.3.1 / 2018-04-12
- 修复打包错误 (PR #138)。
0.3.0 / 2018-02-22
- 添加跳过 NaN 的聚合操作 (PR #102)。
- 添加
np.where
的等价功能 (PR #102)。 - N 输入通用函数现在可以工作 (PR #98)。
- 使
dot
与 NumPy 更一致 (PR #96)。 - 创建了一个基类
SparseArray
(PR #92)。 - 最低 NumPy 版本现在是 1.13 (PR #90)。
- 修复了将
DOK
元素设置为零却不起作用的 Bug (Issue #93, 通过 PR #94)。
0.2.0 / 2018-01-25
- 支持更快的
np.array(COO)
(PR #87)。 - 添加
DOK
类型 (PR #85)。 - 修复大数组求和的问题 (Issue #82, 通过 PR #83)。
- 支持
.size
和.density
(PR #69)。 - 添加了包的文档 (PR #43)。
- 最低要求的 SciPy 版本现在是 0.19 (PR #70)。
len(COO)
现在可以工作了 (PR #68)。scalar op COO
现在适用于所有运算符 (PR #67)。- 验证
.transpose()
的轴 (PR #61)。 - 扩展索引支持 (PR #57)。
- 添加用于生成随机稀疏数组的
random
函数 (PR #41)。 COO(COO)
现在会复制原始对象 (PR #55)。- NumPy 通用函数和归约现在可以在
COO
数组上工作 (PR #49)。 - 修复大数组的 concatenate 和 stack 问题 (Issue #32, 通过 PR #51)。
- 修复标量的
nnz
问题 (Issue #47, 通过 PR #48)。 - 支持更多运算符并移除所有特殊情况 (PR #46)。
- 添加对
triu
和tril
的支持 (PR #40)。 - 在索引时添加对 Ellipsis (
...
) 和None
的支持 (PR #37)。 - 添加对位二进制操作(如
&
和|
)的支持 (PR #38)。 - 在逐元素操作中支持广播 (PR #35)。