-
Notifications
You must be signed in to change notification settings - Fork 307
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Are we ndarray yet? #597
Comments
Going through all of these issues, I have starting to think at broader challenges which should probably fall under
|
I've started taking a crack at einsum here. The implementation I have there has multiple issues (performance and otherwise) and is not at all ready for production, but is apparently correct. I'm actively working on improving the implementation. There's a web frontend that uses the crate as a WASM module deployed here. |
The front-end is what I dreamed I could have when I started to use |
After reading through the implementations/documentation in numpy and opt_einsum, I'm writing the base cases to handle a single operand or a pair of operands and then I'll write a function that takes the general case along with a pre-specified path and iterates along the path using the base cases. Last will come an independent function (or functions) to optimize the path given the operand sizes. |
I published a beta version of my crate to crates.io. It still has some issues but it's far enough along that you are welcome to give it a spin. There is a minimal example (and more in the tests/benches) at the crate repo where you should feel free to open any issues - we can move the discussion there. |
Just came across some missing functionality that might want to be tracked here: #865 |
If you would like a slightly easier task than implementing all of NumPy, a fantastic start would be to follow the Python array API standard specification (the parts that are relevant to Rust!) |
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
ndarray
's types in a public API (Similar toVec<T>
vs&[T]
considerations)Feature parity
np.kron
) (Issue: Kronecker product #652 PR: [WIP] Outer product implementation #690)Interop / Finer-grained control
Implement ascontiguousarray() or contiguous() method (Issue: Implement ascontiguousarray() or contiguous() method #532)shrink_to_fit
method (Issue: Add .shrink_to_fit() method for Array #427)Ergonomics
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)#[track_caller]
to improve panic info Add#[track_caller]
judiciously #972Quality of life
Arbitrary
trait forArray
(Issue: Implement proptest's Arbitrary trait for Array #596)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
Clone
elements instack
andselect
(Issue: SupportClone
elements instack
andselect
#269)Improvements
Documentation
ndarray-examples
Axis
NewType pattern rationale (Issue: Document reason for strongly typedAxis
? #564)astype
(Issues: ndarray equivalent of numpy.astype? #493 , Accepting integer arguments for Array::range? #525)Zip
/azip
with failing examples (Issue: Zip and azip! behavior related to inputted NdProducers #453)Error messages / Debugging
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)Core
ChangeArrayBase.ptr
toNonNull
type (Issue: Change ArrayBase.ptr to NonNull type #434 PR: Change ArrayBase.ptr to NonNull type #683)Performance
sum_3_azip
(Issue: Investigate sum_3_azip's performance #561)The text was updated successfully, but these errors were encountered: