When a.ndim >= 2 and b.ndim > 2, np.dot() and ndarray.dot() place b's leading dimensions in the middle of the result:
a = np.ones((2, 3))
b = np.ones((4, 3, 5))
np.dot(a, b).shape # (2, 4, 5) - the 4 ends up in the middle
@/matmul gives (4, 2, 5). This PR deprecates the dot behavior for these inputs and suggests numpy.tensordot(a, b, axes=[-1, -2]) for the same result, or @/matmul for batched matrix multiplication.
The old references were no longer in this repo, and were being
resolved as links to the scikit-image docs. This replaces them
with an internal link which provides similar information.
See #32663 for more context.
Implements np.minmax using the new ability to register reduction loops to ufuncs implemented in #31816
The loops are implemented in the existing .c.src files with the np.minimun/maximum loops and using exactly the same optimizations and SIMD as them. Two new files minmax.cpp and minmax.h are created just to create the ufunc and initialize the array methods.
I found this to be by far the easiest setup to do now. The other option would be porting the whole loops_minmax.dispatch.c.src to highway and using only c++ but that is a more complicated change with a way more difficult review so I did not do that.
minmax is not a method on the ndarray like min and max are. The only thing exposed in the top-level API is the new np.minmax function. The minimummaximum ufunc is not exposed as np.minimummaximum like np.minimum and np.maximum are as I do not believe there's much use in that. If we ever need it, it's a very simple change.
We should also consider adding a nanminmax in a follow-up PR for completeness and also adding a masked array aware implementation (either by making minmax a method on the ndarray or only by a np.ma.minmax).
Signed-off-by: Iason Krommydas <iason.krom@gmail.com>
At the August 12, 2026 community meeting, the decision was made to increase the limit on open non-draft PRs for non-maintainers from one to two. This PR updates the contributor documentation to reflect the decision.
Adds a new helper stringdtype_find_fixed_width_descr and uses
it in a new code path in find_descriptor_from_array that works
like the existing object string and datetime code paths in that
function that scan array values to infer the destination dtype.
Also adds tests for this new behavior.