0.8.0 / 2019-08-26

This release switches to Numba’s new typed lists, a lot of back-end work with the CI infrastructure, so Linux, macOS and Windows are officially tested. It also includes bug fixes.

It also adds in-progress, not yet public support for the GCXS format, which is a generalisation of CSR/CSC. (huge thanks to @daletovar)

0.7.0 / 2019-03-14

This is a release that adds compatibility with NumPy’s new __array_function__ protocol, for details refer to NEP-18.

The other big change is that we dropped compatibility with Python 2. Users on Python 2 should use version 0.6.0.

There are also some bug-fixes relating to fill-values.

This was mainly a contributor-driven release.

The full list of changes can be found below:

0.6.0 / 2018-12-19

This release breaks backward-compatibility. Previously, if arrays were fed into NumPy functions, an attempt would be made to densify the array and apply the NumPy function. This was unintended behaviour in most cases, with the array filling up memory before raising a MemoryError if the array was too large.

We have now changed this behaviour so that a RuntimeError is now raised if an attempt is made to automatically densify an array. To densify, use the explicit .todense() method.

0.5.0 / 2018-10-12

  • Added COO.real, COO.imag, and COO.conj (PR #196).

  • Added sparse.kron function (PR #194, PR #195).

  • Added order parameter to COO.reshape to make it work with np.reshape (PR #193).

  • Added COO.mean and sparse.nanmean (PR #190).

  • Added sparse.full and sparse.full_like (PR #189).

  • Added COO.clip method (PR #185).

  • Added COO.copy method, and changed pickle of COO to not include its cache (PR #184).

  • Added sparse.eye, sparse.zeros, sparse.zeros_like, sparse.ones, and sparse.ones_like (PR #183).

0.4.1 / 2018-09-12

  • Allow mixed ndarray-COO operations if the result is sparse (Issue #124, via PR #182).

  • Allow specifying a fill-value when converting from NumPy arrays (Issue #179, via PR #180).

  • Added COO.any and COO.all methods (PR #175).

  • Indexing for COO now accepts a single one-dimensional array index (PR #172).

  • The fill-value can now be something other than zero or False (PR #165).

  • Added a sparse.roll function (PR #160).

  • Numba code now releases the GIL. This leads to better multi-threaded performance in Dask (PR #159).

  • A number of bugs occurred, so to resolve them, COO.coords.dtype is always np.int64. COO, therefore, uses more memory than before (PR #158).

  • Add support for saving and loading COO files from disk (Issue #153, via PR #154).

  • Support COO.nonzero and np.argwhere (Issue #145, via PR #148).

  • Allow faux in-place operations (Issue #80, via PR #146).

  • COO is now always canonical (PR #141).

  • Improve indexing performance (PR #128).

  • Improve element-wise performance (PR #127).

  • Reductions now support a negative axis (Issue #117, via PR #118).

  • Match behaviour of ufunc.reduce from NumPy (Issue #107, via PR #108).

0.3.1 / 2018-04-12

0.3.0 / 2018-02-22

  • Add NaN-skipping aggregations (PR #102).

  • Add equivalent to np.where (PR #102).

  • N-input universal functions now work (PR #98).

  • Make dot more consistent with NumPy (PR #96).

  • Create a base class SparseArray (PR #92).

  • Minimum NumPy version is now 1.13 (PR #90).

  • Fix a bug where setting a DOK element to zero did nothing (Issue #93, via PR #94).

0.2.0 / 2018-01-25

  • Support faster np.array(COO) (PR #87).

  • Add DOK type (PR #85).

  • Fix sum for large arrays (Issue #82, via PR #83).

  • Support .size and .density (PR #69).

  • Documentation added for the package (PR #43).

  • Minimum required SciPy version is now 0.19 (PR #70).

  • len(COO) now works (PR #68).

  • scalar op COO now works for all operators (PR #67).

  • Validate axes for .transpose() (PR #61).

  • Extend indexing support (PR #57).

  • Add random function for generating random sparse arrays (PR #41).

  • COO(COO) now copies the original object (PR #55).

  • NumPy universal functions and reductions now work on COO arrays (PR #49).

  • Fix concatenate and stack for large arrays (Issue #32, via PR #51).

  • Fix nnz for scalars (Issue #47, via PR #48).

  • Support more operators and remove all special cases (PR #46).

  • Add support for triu and tril (PR #40).

  • Add support for Ellipsis (...) and None when indexing (PR #37).

  • Add support for bitwise bindary operations like & and | (PR #38).

  • Support broadcasting in element-wise operations (PR #35).