## Purpose The idea behind this collection is to provide an index to easily navigate all currently open ndarray's issues which are **immediately** actionable. This is meant to be a good starting point for new contributors (e.g. what should I work on?) and it can also help existing contributors to identify trends and hot areas. I have pinned it using GitHub's new feature, so that it doesn't get lost (and stale). Given that we have ~100 open issues (and more are opened every day), you are very welcome contributing to this taxonomy effort either commenting on this issue or editing it directly (if you have permissions to do so). I am only adding to this tracker things I can easily understand/where enough context is provided in the issue - if I left something along the way, feel free to add it and to provide more info on it. ### New functionality #### Documentation - [ ] Guidelines on how to use `ndarray`'s types in a public API (Similar to `Vec<T>` vs `&[T]` considerations) #### Feature parity - [ ] Equivalent of numpy.where or numpy.nonzero (Issue: https://github.com/rust-ndarray/ndarray/issues/466) - [ ] [Kronecker product](https://en.wikipedia.org/wiki/Kronecker_product) (or tensor product) (Reference: [`np.kron`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.kron.html)) (Issue: https://github.com/rust-ndarray/ndarray/issues/652)(Ongoing PR: #690) - [x] Scalar versions of standard deviation and variance (Issue: https://github.com/rust-ndarray/ndarray/issues/655) - [x] Add dstack, vstack, and hstack (Issue: https://github.com/rust-ndarray/ndarray/issues/667) - [ ] Sorting (Issue: https://github.com/rust-ndarray/ndarray/issues/195) #### Interop / Finer-grained control - [x] ~Implement ascontiguousarray() or contiguous() method (Issue: https://github.com/rust-ndarray/ndarray/issues/532)~ - [ ] Add `shrink_to_fit` method (Issue: https://github.com/rust-ndarray/ndarray/issues/427) #### Ergonomics - [x] Implement `multislice_axis!` macro (Issue: https://github.com/rust-ndarray/ndarray/issues/593) - [x] ~New constructor method for 2D arrays from an iterator of 1D arrays/vectors (Issue: https://github.com/rust-ndarray/ndarray/issues/539)~ (https://github.com/rust-ndarray/ndarray/issues/609) - [ ] `ArrawView` as custom Dynamically Sized Type (Issue: https://github.com/rust-ndarray/ndarray/issues/538) - [x] Use `#[track_caller]` to improve panic info #972 #### Quality of life - [ ] Implement [proptest](https://altsysrq.github.io/proptest-book/intro.html)'s [`Arbitrary`](https://docs.rs/proptest/0.9.1/proptest/arbitrary/trait.Arbitrary.html) trait for `Array` (Issue: https://github.com/rust-ndarray/ndarray/issues/596) - [x] Add new type aliases: `ArcArray1` and `ArcArray2` (Issue: https://github.com/rust-ndarray/ndarray/issues/661) - [x] ~Run `rustfmt` on the project and add it to the CI pipeline (PR: https://github.com/rust-ndarray/ndarray/pull/608)~ - [x] ~Run `clippy` on the project and take care of the linter warnings (PR: https://github.com/rust-ndarray/ndarray/pull/642)~ #### Other - [ ] Add in-place variants of dimension-changing operations for dynamic-dimensional arrays (Issue: https://github.com/rust-ndarray/ndarray/issues/428) - [x] Support `Clone` elements in `stack` and `select` (Issue: #269) ### Improvements #### Documentation - [ ] Add a new example to [`ndarray-examples`](https://github.com/rust-ndarray/ndarray-examples) - [x] Provide more details on `Axis` NewType pattern rationale (Issue: https://github.com/rust-ndarray/ndarray/issues/564) - [ ] Document ndarray's equivalent to NumPy's `astype` (Issues: https://github.com/rust-ndarray/ndarray/issues/493 , https://github.com/rust-ndarray/ndarray/issues/525) - [ ] Improve doc examples for `Zip`/`azip` with failing examples (Issue: https://github.com/rust-ndarray/ndarray/issues/453) #### Error messages / Debugging - [ ] Better messages for incompatible shapes errors (Issue: https://github.com/rust-ndarray/ndarray/issues/449). - [x] ~Better formatting with `Debug` for arrays (Issue: https://github.com/rust-ndarray/ndarray/issues/398, PR: https://github.com/rust-ndarray/ndarray/pull/606)~ #### Sharp API edges/corner cases - [x] ~Avoid panicking for zero-length axis in `map_axis`/`map_axis_mut` (Issue: https://github.com/rust-ndarray/ndarray/issues/579)~ - [ ] Refactor all dimension-related traits (Issues: https://github.com/rust-ndarray/ndarray/issues/519 https://github.com/rust-ndarray/ndarray/issues/367) #### Core - [x] ~Change `ArrayBase.ptr` to `NonNull` type (Issue: https://github.com/rust-ndarray/ndarray/issues/434)(Ongoing PR: #683)~ - [ ] Provide more direct mutable access to shape, strides, and owned data (Issues: https://github.com/rust-ndarray/ndarray/issues/429 https://github.com/rust-ndarray/ndarray/issues/592) #### Performance - [ ] Have a look at `sum_3_azip` (Issue: https://github.com/rust-ndarray/ndarray/issues/561) - [ ] Faster, arbitrary-order iterators (Issue: https://github.com/rust-ndarray/ndarray/issues/469) - [ ] Co-broadcasting/two-sided broadcasting performance fixes #936