Another feature I missed that can be added to this list is the descending flag to sort() and argsort(). See https://github.com/numpy/numpy/issues/14728 and https://data-apis.org/array-api/latest/API_specification/generated/signatures.sorting_functions.sort.html.
Aaron Meurer On Wed, Dec 7, 2022 at 2:21 PM Aaron Meurer <asmeu...@gmail.com> wrote: > > Hi all. > > As discussed in today's community meeting, I plan to start working on > adding some useful functions to NumPy which are part of the array API > standard https://data-apis.org/array-api/latest/index.html. > > Although these are all things that will be needed for NumPy to be > standard compliant, my focus for now at least is going to be on new > functionality that is useful for NumPy independent of the standard. > The things that I (and possibly others) plan on working on are: > > - A new function matrix_transpose() and corresponding ndarray > attribute x.mT. Unlike transpose(), matrix_transpose() will require at > least 2 dimensions and only operate on the last two dimensions (it's > effectively an alias for swapaxes(x, -1, -2)). This was discussed in > the past at https://github.com/numpy/numpy/issues/9530 and > https://github.com/numpy/numpy/issues/13797. See > https://data-apis.org/array-api/latest/API_specification/generated/signatures.linear_algebra_functions.matrix_transpose.html > > - namedtuple outputs for eigh, qr, slogdet and svd. This would only > apply to the instances where they currently return a tuple (e.g., > svd(compute_uv=False) would still just return an array). See the > corresponding pages at > https://data-apis.org/array-api/latest/extensions/index.html for the > namedtuple names. These four functions are the ones that are part of > the array API spec, but if there are other functions that aren't part > of the spec which we'd like to update to namedtuples as well for > consistency, I can look into that. > > - New functions matrix_norm() and vector_norm(), which split off the > behavior of norm() between vector and matrix specific functionalities. > This is a cleaner API and would allow these functions to be proper > gufuncs. See > https://data-apis.org/array-api/latest/extensions/generated/signatures.linalg.vector_norm.html > and > https://data-apis.org/array-api/latest/extensions/generated/signatures.linalg.matrix_norm.html. > > - New function vecdot() which does a broadcasted 1-D dot product along > a specified axis > https://data-apis.org/array-api/latest/API_specification/generated/signatures.linear_algebra_functions.vecdot.html#signatures.linear_algebra_functions.vecdot > > - New function svdvals(), which is equivalent to > svd(compute_uv=False). The idea here is that functions that have > different return types depending on keyword arguments are problematic > for various reasons (e.g., they are hard to type annotate), so it's > cleaner to split these APIs. Functionality-wise there's not much new > here, so this is lower priority than the rest. > > - New function permute_dims(), which works just like transpose() but > it has a required axis argument. This is more explicit and can't be > confused with doing a matrix transpose, which transpose() does not do > for stacked matrices by default. > > - Adding a copy argument to reshape(). This has already been discussed > at https://github.com/numpy/numpy/issues/9818. The main motivation is > to replace the current usage of modifying array.shape inplace. (side > note: this also still needs to be added to numpy.array_api) > > You can see the source code of numpy.array_api for an idea of what > pure Python implementations of these changes look like, but to be > clear, the proposal here is to add these to the main NumPy namespace, > not to numpy.array_api. > > One question I have is which of the new functions proposed should be > implemented as pure Python wrappers and which should be implemented in > C as ufuncs/gufuncs? > > Unless there are any objections, I plan to start working on > implementing these right away. > > Aaron Meurer _______________________________________________ NumPy-Discussion mailing list -- numpy-discussion@python.org To unsubscribe send an email to numpy-discussion-le...@python.org https://mail.python.org/mailman3/lists/numpy-discussion.python.org/ Member address: arch...@mail-archive.com