Description
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 toVec<T>
vs&[T]
considerations)
Feature parity
- Equivalent of numpy.where or numpy.nonzero (Issue: Equivalent of numpy.where or numpy.nonzero #466)
- Kronecker product (or tensor product) (Reference:
np.kron
) (Issue: Kronecker product #652 PR: [WIP] Outer product implementation #690) - Scalar versions of standard deviation and variance (Issue: Standard deviation and variance #655)
- Add dstack, vstack, and hstack (Issue: Add dstack, vstack, and hstack #667)
- Sorting (Issue: sorting #195)
Interop / Finer-grained control
-
Implement ascontiguousarray() or contiguous() method (Issue: Implement ascontiguousarray() or contiguous() method #532) - Add
shrink_to_fit
method (Issue: Add .shrink_to_fit() method for Array #427)
Ergonomics
- Implement
multislice_axis!
macro (Issue: Add multislice_axis! macro #593) -
New constructor method for 2D arrays from an iterator of 1D arrays/vectors (Issue: Building a 2D ndarray from rows or columns #539)(Improve documentation or add methods for conversion from nestedVec
/ArrayBase
#609) -
ArrawView
as custom Dynamically Sized Type (Issue: ArrayView as Custom DST #538) - Use
#[track_caller]
to improve panic info Add#[track_caller]
judiciously #972
Quality of life
- Implement proptest's
Arbitrary
trait forArray
(Issue: Implement proptest's Arbitrary trait for Array #596) - Add new type aliases:
ArcArray1
andArcArray2
(Issue: ArcArray1 #661) -
Runrustfmt
on the project and add it to the CI pipeline (PR: Run rustfmt and add to travis #608) -
Runclippy
on the project and take care of the linter warnings (PR: Some Clippy lints #642)
Other
- Add in-place variants of dimension-changing operations for dynamic-dimensional arrays (Issue: Add in-place variants of dimension-changing operations for dynamic-dimensional arrays #428)
- Support
Clone
elements instack
andselect
(Issue: SupportClone
elements instack
andselect
#269)
Improvements
Documentation
- Add a new example to
ndarray-examples
- Provide more details on
Axis
NewType pattern rationale (Issue: Document reason for strongly typedAxis
? #564) - Document ndarray's equivalent to NumPy's
astype
(Issues: ndarray equivalent of numpy.astype? #493 , Accepting integer arguments for Array::range? #525) - Improve doc examples for
Zip
/azip
with failing examples (Issue: Zip and azip! behavior related to inputted NdProducers #453)
Error messages / Debugging
- Better messages for incompatible shapes errors (Issue: Incompatible shapes error could give more information. #449).
-
Better formatting withDebug
for arrays (Issue: Smarter Debug formatting for arrays #398, PR: Implemented a function for smarter debug formatting. #606)
Sharp API edges/corner cases
-
Avoid panicking for zero-length axis inmap_axis
/map_axis_mut
(Issue: Support zero-lengthaxis
in.map_axis/_mut()
#579) - Refactor all dimension-related traits (Issues: Plan for dimension types #519 Shape<D> and StrideShape<D> should be merged #367)
Core
-
ChangeArrayBase.ptr
toNonNull
type (Issue: Change ArrayBase.ptr to NonNull type #434 PR: Change ArrayBase.ptr to NonNull type #683) - Provide more direct mutable access to shape, strides, and owned data (Issues: Provide more direct mutable access to shape, strides, and owned Vec #429 Direct access to Shape #592)
Performance
- Have a look at
sum_3_azip
(Issue: Investigate sum_3_azip's performance #561) - Faster, arbitrary-order iterators (Issue: Faster iterator for arbitrary order #469)
- Co-broadcasting/two-sided broadcasting performance fixes Fixes and follow-ups to two-sided broadcasting in arithmethic ops #936