The fundamental package for scientific computing with Python.

Overview

NumPy

Powered by NumFOCUS Pypi Downloads Conda Downloads Stack Overflow Nature Paper

NumPy is the fundamental package needed for scientific computing with Python.

It provides:

  • a powerful N-dimensional array object
  • sophisticated (broadcasting) functions
  • tools for integrating C/C++ and Fortran code
  • useful linear algebra, Fourier transform, and random number capabilities

Testing:

NumPy requires pytest. Tests can then be run after installation with:

python -c 'import numpy; numpy.test()'

Call for Contributions

The NumPy project welcomes your expertise and enthusiasm!

Small improvements or fixes are always appreciated; issues labeled as "good first issue" may be a good starting point. If you are considering larger contributions to the source code, please contact us through the mailing list first.

Writing code isn’t the only way to contribute to NumPy. You can also:

  • review pull requests
  • triage issues
  • develop tutorials, presentations, and other educational materials
  • maintain and improve our website
  • develop graphic design for our brand assets and promotional materials
  • translate website content
  • help with outreach and onboard new contributors
  • write grant proposals and help with other fundraising efforts

If you’re unsure where to start or how your skills fit in, reach out! You can ask on the mailing list or here, on GitHub, by opening a new issue or leaving a comment on a relevant issue that is already open.

Our preferred channels of communication are all public, but if you’d like to speak to us in private first, contact our community coordinators at [email protected] or on Slack (write [email protected] for an invitation).

We also have a biweekly community call, details of which are announced on the mailing list. You are very welcome to join.

If you are new to contributing to open source, this guide helps explain why, what, and how to successfully get involved.

Comments
  • Decide on what the resolution rules for __op__/__rop__/__numpy_ufunc__ actually are

    Decide on what the resolution rules for __op__/__rop__/__numpy_ufunc__ actually are

    There is a complex set of questions around how to handle method resolution in the presence of __numpy_ufunc__. Currently in master is an extremely complicated set of rules that isn't documented and that I don't actually understand (see #5748 for the latest set of changes to this), so it's kinda hard to know whether they are correct, but I suspect not. And this is a blocker for 1.10, b/c whatever we release in 1.10 will be set in stone forever.

    I strongly feel that we cannot include __numpy_ufunc__ in a release without at least having a document somewhere describing what the actual dispatch rules are. I hope that doesn't mean we have to defer __numpy_ufunc__ for another release, but if it does then it does.

    AFAICT this is how a op b dispatch works for ndarrays, BEFORE __numpy_ufunc__ (i.e., this is how 1.9 works):

    • First Python uses the subclass rule to decide whether to invoke a.__op__(b) or b.__rop__(a). So in the case where one of these objects is a proper subclass of the other, that object always gets to do absolutely anything, so that's fine. The interesting cases are the ones where neither is a proper subclass of the other (either because it's like, matrix + masked array, or because it's like ndarray + scipy.sparse). So without loss of generality, let's focus on the case where Python calls a.__op__(b), and a is either an instance of ndarray or else an instance of a subclass of ndarray which has not overridden __op__, i.e. we're getting ndarray.__op__(a, b).
    • ndarray.__op__ has the following logic (see PyArray_GenericBinaryFunction in number.c):
      • If b is not an ndarray at all (even a subclass), and b has a higher __array_priority__ than a, then we return NotImplemented and let control pass to b.__rop__(a).
      • Otherwise, we call np.op(a, b) and let the ufunc machinery take over.
    • np.op(a, b) does the following (see PyUFunc_GenericFunction, PyUFunc_GeneralizedFunction, in ufunc_object.c, and also ufunc_generic_call which converts -2 return values from the previous into NotImplemented so you have to audit their whole call stack):
      • If b is not an ndarray, and calling np.array(b) returns an object array (presumably because coercion failed... though I guess this could also be hit if b.__array__() return an object array or something), AND b has a higher __array_priority__ than a, and b has an __rop__ method, then return NotImplemented.
      • If any of our arrays contain structured dtypes or strings, and there are no special struct ufunc loops registered, but not if any of our arrays contain objects, then return NotImplemented. (This is buried in get_ufunc_arguments, search for return -2.)
      • Otherwise we return the actual ufunc result.

    Now, my suggestion is that the way we would EVENTUALLY like this to look is:

    • First, Python uses the subclass rule to decide whether to invoke a.__op__(b) or b.__rop__(a). As above, let's assume that it invokes ndarray.__op__(a, b).
    • ndarray.__op__(a, b) calls np.op(a, b) (which in turn invokes all the standard ufunc stuff, including __numpy_ufunc__ resolution).
    • There is no step 3.

    I submit that it is obvious that IF we can make this work, then it is obviously the ideal outcome, because it is the simplest possible solution. But is it too simple? To determine this we have to answer two questions: (1) Will it adequately address all the relevant use cases? (2) Can we get there from here?

    So let's compare the current rules to my dream rules.

    First, we observe that everything that currently happens inside the ufunc machinery looks like it's totally wrong. The first check can only be triggered if b is a non-ndarray that has a higher __array_priority__ (among other things), but if we look above, we see that those conditions are sufficient to trigger the check in ndarray.__op__, so checking again at the ufunc level is redundant at best. And the second check is just incoherent nonsense AFAICT. The only reason to return NotImplemented is b/c you want to pass control to another __(r)op__ method, and there's no reason arrays containing structured dtypes in particular should somehow magically have different __(r)op__ methods available than other arrays. So we can just get rid of all the ufunc stuff immediately, great.

    That leaves the __array_priority__ stuff. We have two problems here: we can't just drop this immediately b/c of backcompat issues, and we need to have some way to continue to support all the use cases that this currently supports. The first problem is just a matter of having a deprecation period. For the second, observe that a class which defines a __numpy_ufunc__ method gets complete control over what any ufunc call does, so it has almost as much power as a class that currently sets __array_priority__. The only additional power that __array_priority__ currently gives you is that it lets you distinguish between e.g. a call to ndarray.__add(a, b) versus a call to np.add(a, b). So the only code that really loses out from my proposed change is code which wants a + b and add(a, b) to do different things.

    AFAIK in the entire history of numpy there is only one situation where this power has been used on purpose: the definition of matrix classes where a * b is matmul, but np.multiply(a, b) is elmul. And we've all agreed that such classes should be deprecated and eventually phased out (cite: PEP 465).

    So, I conclude that EVENTUALLY my dream rules should work great. The only problem is that we need some temporary compromises to get us from here to there. Therefore, I propose we use the following dispatch rules in numpy 1.10, with the goal of moving to my "dream rules" in some future version:

    • First, Python uses the subclass rule to decide whether to invoke a.__op__(b) or b.__rop__(a). As above, let's assume that it invokes ndarray.__op__(a, b).
    • ndarray.__op__(a, b) does the following:
      • If b does not define __numpy_ufunc__ and is not an ndarray at all (even a subclass), and b has a higher __array_priority__ than a, then we issue a deprecation warning and return NotImplemented and let control pass to b.__rop__(a). (bolded parts are changes compared to the current behaviour)
      • If __op__ is __mul__ and b->tp_class->tp_name.startswith("scipy.sparse."), then return NotImplemented. (This rule is necessary in addition to the above, because scipy.sparse has already made a release containing __numpy_ufunc__ methods, so the exception above doesn't apply.)
      • Otherwise, we call np.op(a, b) and let the ufunc machinery take over.

    I believe that this is adequate to covers all practical use cases for the current dispatch machinery, and gives us a clean path to better dispatch machinery in the future.

    The main alternative proposal is Pauli's, which involves a very complicated check (I won't try to summarize here, see this comment and following code). The goal of that approach is to continue supporting classes where a + b and add(a, b) do different things. I don't think that keeping substantial additional complexity around indefinitely is worth it in order to support functionality that no-one has ever found a use for except in one very specific case (overriding __mul__), and where we generally agree that that one specific case should be phased out as possible.

    I would very much appreciate feedback from scipy.sparse and astropy in particular on whether the above covers all their concerns.

    (Partial) History: #4815, #5748 CC: @pv, @cowlicks, @mhvk

    component: numpy.core 54 - Needs decision 
    opened by njsmith 328
  • A new PEP for infix matrix multiplication

    A new PEP for infix matrix multiplication

    This is now PEP 465, and a properly rendered version can be found here here.

    A poorly rendered version of the latest draft can be found here.

    Let's use this PR as a central place to discuss this draft PEP for adding an infix matrix multiplication operator to numpy. The PR format is nice in that it allows line by line comments, updating, etc.

    Hopefully this goes without saying, but just in case: We especially welcome comments about how the proposal will work for non-numpy projects (or could work, with fixes); this proposal started in the numpy community but the idea here is to build a consensus about how to make Python better for all projects that care about linear algebra.

    Some possible points of discussion:

    • Does this in fact seem like a good idea?
    • Do people agree with the points where I claim "there is consensus that..."? (You can search on "consensus")
    • Any suggestions on making the argument stronger and clearer?
    opened by njsmith 308
  • Windows wheel package (.whl) on Pypi

    Windows wheel package (.whl) on Pypi

    Please make Windows wheel packages and put them on Pypi.

    Currently it is possible to download Windows wheel packages for numpy here: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

    It would be great if the wheels were directly available on the Pypi server https://pypi.python.org/pypi/ so that they can be installed with pip.

    component: distribution 
    opened by mcarans 267
  • ENH: Add `__array_ufunc__`

    ENH: Add `__array_ufunc__`

    This reverts commit bac094caf14e420a801cf952080aa443a3865d97 and enables __numpy_ufunc__ for development in the NumPy 1.13.0 development cycle.

    EDIT: Note that the name has been changed to __array_ufunc__ together with various changes to the function signature and implementation.

    01 - Enhancement component: numpy.core 
    opened by charris 234
  • ENH: randomgen

    ENH: randomgen

    ~A start at m~Merging bashtage/randomgen into numpy, as part of NEP 19.

    The original repo was cloned, moved to a subdirectory, and then merged into numpy, as documented in _randomgen/README-git.md. Then I moved the code into numpy/random and the docs into doc/source/random and doc/source/papers.

    ~Still very much a work in progress.~

    01 - Enhancement component: numpy.random 
    opened by mattip 203
  • polyfit and eig regression tests fail after Windows 10 update to 2004

    polyfit and eig regression tests fail after Windows 10 update to 2004

    Tests are failing: FAILED ....\lib\tests\test_regression.py::TestRegression::test_polyfit_build - numpy.linalg.LinAlgError: SVD did not... FAILED ....\linalg\tests\test_regression.py::TestRegression::test_eig_build - numpy.linalg.LinAlgError: Eigenvalues ... FAILED ....\ma\tests\test_extras.py::TestPolynomial::test_polyfit - numpy.linalg.LinAlgError: SVD did not converge i...

    with exceptions:

    err = 'invalid value', flag = 8
        def _raise_linalgerror_lstsq(err, flag):
    >       raise LinAlgError("SVD did not converge in Linear Least Squares")
    E       numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
    err        = 'invalid value'
    flag       = 8
    

    and

    err = 'invalid value', flag = 8
        def _raise_linalgerror_eigenvalues_nonconvergence(err, flag):
    >       raise LinAlgError("Eigenvalues did not converge")
    E       numpy.linalg.LinAlgError: Eigenvalues did not converge
    err        = 'invalid value'
    flag       = 8
    

    Steps taken:

    • Create a VM
    • Install latest Windows 10 and update to the latest version 2004 (10.0.19041)
    • Install Python 3.8.3
    • pip install pytest
    • pip install numpy
    • pip install hypothesis
    • run tests in the package

    Same happens issue happens when running on tests in the repository.

    Version 1.19.0 of numpy

    Am I missing any dependencies? Or is it just Windows going bonkers?

    00 - Bug 32 - Installation 
    opened by Caiptain1 182
  • Decide on new PRNG BitGenerator default

    Decide on new PRNG BitGenerator default

    #13163 will be bringing in the long-awaited replacement of numpy's PRNG infrastructure. In the interest of keeping that PR manageable, we will merge it to master before all of the decisions are finalized, like which BitGenerator will be nominated as the default.

    We must make a decision before the first release with the new infrastructure. Once released, we will be stuck with our choice for a while, so we should be sure that we are comfortable with our decision.

    On the other hand, the choice of the default does not have that many consequences. We are not talking about the default BitGenerator underlying the numpy.random.* convenience functions. Per NEP 19, these remain aliases to the legacy RandomState, whose BitGenerator remains MT19937. The only place where the default comes in is when Generator() is instantiated without arguments; i.e. when a user requests a Generator with an arbitrary state, presumably to then call the .seed() method on it. This might probably be pretty rare, as it would be about as easy to just explicitly instantiate it with the seeded BitGenerator that they actually want. A legitimate choice here might actually be to nominate no default and always require the user to specify a BitGenerator.

    Nonetheless, we will have recommendations as to which BitGenerator people should use most of the time, and while we can change recommendations fairly freely, whichever one has pride of place will probably get written about most in books, blogs, tutorials, and such.

    IMO, there are a few main options (with my commentary, please feel free to disagree; I have not attempted to port over all the relevant comments from #13163):

    No default

    Always require Generator(ChosenBitGenerator(maybe_seed)). This is a little unfriendly, but as it's a pretty convenient way to get the generator properly initialized for reproducibility, people may end up doing this anyways, even if we do have a default.

    MT19937

    This would be a good conservative choice. It is certainly no worse than the status quo. As the Mersenne Twister is still widely regarded as "the standard" choice, it might help academic users who need their papers to be reviewed by people who might question "non-standard" choices, regardless of the specific qualities of the PRNG. "No one ever got fired for hiring IBM." The main downsides of MT19937 are mostly that it is slower than some of the available alternatives, due to its very large state, and that it fails some statistical quality tests. In choosing another PRNG, we have an opportunity (but not an obligation, IMO) to be opinionated here and try to move "the standard", if we wish.

    PCG64

    This is likely the one that I'll be using most often, personally. The main downside is that it uses 128-bit integer arithmetic, which is emulated in C if the compiler does not provide such an integer type. The two main platforms for which this is the case are 32-bit CPUs and 64-bit MSVC, which just does not support 128-bit integers even when the CPU does. Personally, I do not suggest letting the performance increasingly-rare 32-bit CPUs dictate our choices. But the MSVC performance is important, though, since our Windows builds do need that compiler and not other Windows compilers. It can probably be addressed with some assembly/compiler intrinsics, but someone would have to write them. The fact that it's only MSVC that we have to do this for makes this somewhat more palatable than other times when we are confronted with assembly.

    Xoshiro256

    Another modern choice for a small, fast PRNG. It does have a few known statistical quirks, but they are unlikely to be a major factor for most uses. Those quirks make me shy away from it, but that's my personal choice for the code I'll be writing.

    15 - Discussion component: numpy.random 
    opened by rkern 166
  • ENH: Nditer as context manager

    ENH: Nditer as context manager

    Resolves issue #9714 by enabling use of nditer as a context manager. Code like this:

    a = np.arange(24, dtype='f8').reshape(2, 3, 4).T
    it = np.nditer(a, [], [['readwrite', 'updateifcopy']],
                casting='same_kind', op_dtypes=[np.dtype('f4')])
    # Check that UPDATEIFCOPY is activated
    it.operands[0][2, 1, 1] = -12.5
    assert  a[2, 1, 1] != -12.5
    it = None                     # magic!!!
    assert a[2, 1, 1] == -12.5
    

    now becomes

    a = np.arange(24, dtype='f8').reshape(2, 3, 4).T
    with np.nditer(a, [], [['readwrite', 'updateifcopy']],
                casting='same_kind', op_dtypes=[np.dtype('f4')]) as it:
        # Check that UPDATEIFCOPY is activated
        it.operands[0][2, 1, 1] = -12.5
        assert  a[2, 1, 1] != -12.5
    assert a[2, 1, 1] == -12.5
    

    No more need to do the it = None assignment to write the data back to the original array. Tests were adjusted. In addition, DeprecationWarning will be raised if a nditer should be using this code pattern and is not, or if the nditer it is used outside the context manager.

    This also allows completing the confusing part of pull request #9639, and now any call to PyArray_SetUpdateIfCopyBase will emit a DeprecationWarning.

    I am not really happy with the way this affects nested_iters, since it returns a tuple there is no convienient way to handle the context manager there, that is why the test tweak is in a seperate commit.

    01 - Enhancement component: numpy.core 24 - PyPy 
    opened by mattip 159
  • numpy.dot crash with numpy.float32 input

    numpy.dot crash with numpy.float32 input

    A user of gensim @fbkarsdorp reported crash (segfault) with NumPy: piskvorky/gensim#131

    The crash seems to have nothing to do with gensim, so I'm transferring the issue here. It happens in dot of matrix*vector in single precision, on his OS X Maverick.

    component: numpy.linalg 
    opened by piskvorky 155
  • ENH: implement NEP-35's `like=` argument

    ENH: implement NEP-35's `like=` argument

    This PR adds the implementation of NEP-35's like= argument, allowing dispatch of array creation functions with __array_function__ based on a reference array.

    There are two ways to dispatch, details below.

    The first is via Python API (as demonstrated by np.ones and np.full), where array_function_dispatch is used, but differently than the existing dispatch for compute functions, where it's dispatched usually on the first argument, this is dispatched on the like= keyword argument, returning (like,). We also check if like is not None as a performance optimization, see https://github.com/numpy/numpy/pull/16935#issuecomment-670675185 .

    The second dispatch occurs via C through splitting array_implement_array_function in two functions. The first function remains very similar to how it was originally implemented (array_implement_array_function) but adds a step to remove like= argument before calling downstream libraries -- downstream libraries shall not add like= to their signatures. The second function (array_implement_c_array_function) will also remove the like= argument, but it will also extract the reference array from it and will gather the public_api Python function by doing an import on np.function_name, where function_name shall be passed by the calling function.

    The usage of the C dispatch is very straightforward and optimized for the case where like=None, adding minimal overhead to such functions. The necessary work will thus be only done when a reference array is passed, such as importing the NumPy Python function -- this can still be improved by using a lookup mechanism to avoid reimporting for each subsequent call but it was decided not to do that in this PR. The caller function will still need to add a like argument to its keyword list and parse that, but it will not be used anywhere other than the dispatcher function, it will also need to call the C dispatcher and check for its return value, if it returns Py_NotImplemented it will continue with NumPy's implementation, otherwise return that value (from downstream library) immediately.

    01 - Enhancement Priority: high component: __array_function__ 
    opened by pentschev 108
  • The PCG implementation provided by Numpy has significant, dangerous self-correlation

    The PCG implementation provided by Numpy has significant, dangerous self-correlation

    The PCG generator used by Numpy has a significant amount self-correlation. That is, for each sequence generated from a seed there is a large number of correlated, nonoverlapping sequences starting from other seeds. By "correlated" I mean that interleaving two such sequences and testing the result you obtain failures that did not appear in each sequence individually.

    The probability that two generators out of large set of terminals get two of those sequences is nonnegligible. Why this happens from a mathematical viewpoint is well known but it is explained here in detail: http://prng.di.unimi.it/pcg.pgp (see "Subsequences within the same generator").

    To show this problem directly, I wrote this simple C program reusing the Numpy code: http://prng.di.unimi.it/intpcgnumpy.c . The program takes two 128-bit states of two generators (with the same LCG constant or "stream") in the form of high and low bits, interleaves their output and writes it in binary form. Once we send it through PractRand, we should see no statistical failure, as the two streams should be independent. But if try to start from two states with the same 64 lower bits, you get:

    ./intpcgnumpy 0x596d84dfefec2fc7 0x6b79f81ab9f3e37b 0x8d7deae980a64ab0 0x6b79f81ab9f3e37b | stdbuf -oL ~/svn/c/xorshift/practrand/RNG_test stdin -tf 2 -te 1 -tlmaxonly -multithreaded RNG_test using PractRand version 0.94 RNG = RNG_stdin, seed = unknown test set = expanded, folding = extra

    rng=RNG_stdin, seed=unknown
    length= 128 megabytes (2^27 bytes), time= 2.2 seconds
      Test Name                         Raw       Processed     Evaluation
      BCFN(0+0,13-2,T)                  R= +27.6  p =  1.0e-13    FAIL
      BCFN(0+1,13-2,T)                  R= +68.0  p =  2.3e-34    FAIL !!!
      BCFN(0+2,13-3,T)                  R= +90.8  p =  8.8e-43    FAIL !!!
      BCFN(0+3,13-3,T)                  R=+120.6  p =  6.9e-57    FAIL !!!!
      DC6-6x2Bytes-1                    R=  +8.9  p =  4.0e-5   mildly suspicious
      DC6-5x4Bytes-1                    R= +15.7  p =  4.3e-9   very suspicious
      [Low1/8]BCFN(0+0,13-4,T)          R= +11.6  p =  4.9e-5   unusual
      ...and 1074 test result(s) without anomalies
    

    You can even go lower—you just need the same 58 lower bits:

    ./intpcgnumpy 0x596d84dfefec2fc7 0x0579f81ab9f3e37b 0x8d7deae980a64ab0 0x6b79f81ab9f3e37b | stdbuf -oL ~/svn/c/xorshift/practrand/RNG_test stdin -tf 2 -te 1 -tlmaxonly -multithreaded
    
    [...]
    rng=RNG_stdin, seed=unknown
    length= 32 gigabytes (2^35 bytes), time= 453 seconds
      Test Name                         Raw       Processed     Evaluation
      [Low1/16]FPF-14+6/32:cross        R= +11.6  p =  4.0e-10   VERY SUSPICIOUS
      [Low1/32]FPF-14+6/32:cross        R= +16.5  p =  3.2e-14    FAIL
      [Low1/32]FPF-14+6/16:cross        R= +12.8  p =  3.8e-11   VERY SUSPICIOUS
      [Low1/64]FPF-14+6/64:cross        R=  +6.8  p =  4.8e-6   mildly suspicious
      [Low1/64]FPF-14+6/32:cross        R=  +6.0  p =  1.9e-5   unusual
      [Low1/64]FPF-14+6/16:cross        R=  +5.5  p =  5.8e-5   unusual
      [Low4/32]FPF-14+6/64:all          R=  +5.8  p =  5.9e-5   unusual
      [Low4/32]FPF-14+6/32:(0,14-0)     R=  +7.7  p =  1.0e-6   unusual
      [Low4/32]FPF-14+6/32:(1,14-0)     R=  +7.7  p =  9.1e-7   unusual
      [Low4/32]FPF-14+6/32:all          R=  +6.5  p =  1.3e-5   unusual
      [Low4/64]FPF-14+6/64:all          R=  +5.9  p =  5.1e-5   unusual
      [Low4/64]FPF-14+6/64:cross        R=  +8.2  p =  3.0e-7   suspicious
      [Low4/64]FPF-14+6/32:(0,14-0)     R=  +7.6  p =  1.0e-6   unusual
      [Low8/64]FPF-14+6/64:(0,14-0)     R= +17.0  p =  2.2e-15    FAIL
      [Low8/64]FPF-14+6/64:(1,14-0)     R=  +9.1  p =  5.1e-8   mildly suspicious
      [Low8/64]FPF-14+6/64:all          R= +12.7  p =  2.1e-11   VERY SUSPICIOUS
      [Low8/64]FPF-14+6/32:(0,14-0)     R= +12.8  p =  1.7e-11   VERY SUSPICIOUS
      [Low8/64]FPF-14+6/32:all          R= +11.0  p =  9.3e-10   VERY SUSPICIOUS
      ...and 1696 test result(s) without anomalies
    

    Note that to get more the 50% probability that two generators start from two correlated seed (chosen at random) you need just about half a million generators starting at random (birthday paradox). And if you consider the probability that they do not exactly start from the same state, but have significant overlapping correlating sequences, you need much less.

    Any sensible generator from the literature will not behave like that. You can choose adversarially any two starting states of MRG32k3a, SFC64, CMWC, xoshiro256++, etc., and as long as you generate nonoverlapping sequences you will not see the failures above. This is a major drawback that can pop up when a number of devices uses the generator and one assumes (as it should be) that pairwise those sequences should not show correlation. The correlation can induce unwanted behavior that is hard to detect.

    Please at least document somewhere that the generator should not be used on multiple terminals or in a highly parallel environment.

    The same can happen with different "streams", as the sequences generated by an LCG by changing the additive constant are all the same modulo a change of sign and an additive constant. You can see some discussion here: https://github.com/rust-random/rand/issues/907 and a full mathematical discussion of the problem here: https://arxiv.org/abs/2001.05304 .

    component: numpy.random 
    opened by vigna 106
  • BUG: Calling `numpy.histogramdd` with a dictionary of duck arrays does not call the overridden function.

    BUG: Calling `numpy.histogramdd` with a dictionary of duck arrays does not call the overridden function.

    Describe the issue:

    I'm attempting to make an xarray-style ndarray duck type which I'm calling named_arrays. I'm trying to override numpy.histogramdd, but I can't get the numpy dispatch mechanism to call my overridden function.

    For my use case, it makes the most sense to me to have the sample argument of numpy.histogramdd be a dictionary where the keys are strings and the values are instances of my duck ndarray. The keys represent different components and become the names of the axes of the resulting histogram.

    I think it is not working since the dict[str, DuckArray] is just an iterable of strings from the dispatch mechanism's perspective, none of which have an implementation of __array_function__.

    Is there a way to coerce the dispatch mechanism to call the implementation of __array_function__ in the values of samples?

    If not I am willing to open a PR to address this issue if there is a way to resolve this in a way that everyone is happy with.

    Reproduce the code example:

    import dataclasses
    import numpy as np
    
    @dataclasses.dataclass
    class DuckArray:
        data: np.ndarray
    
        def __array_function__(self, func, types, args, kwargs, ):
            if func is np.histogramdd:
                print('Inside DuckArray.__array_function__')
            else:
                return NotImplemented
    
    def test_dict():
        sample = dict(x=DuckArray(np.random.random(11)))
        np.histogramdd(sample)
    
    def test_tuple():
        sample = DuckArray(np.random.random(11)),
        np.histogramdd(sample)
    

    Error message:

    named_arrays\example.py:13 (test_dict)
    def test_dict():
            sample = dict(x=DuckArray(np.random.random(11)))
    >       np.histogramdd(sample)
    
    example.py:16: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    <__array_function__ internals>:200: in histogramdd
        ???
    ..\..\..\AppData\Local\Programs\Python\Python310\lib\site-packages\numpy\lib\histograms.py:1001: in histogramdd
        smin, smax = _get_outer_edges(sample[:,i], range[i])
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    
    a = array([{'x': DuckArray(data=array([0.95880504, 0.41589853, 0.94013642, 0.90798121, 0.83272869,
                  0.7402617...6,
                  0.2161453 ]))}                                                                  ],
          dtype=object)
    range = None
    
        def _get_outer_edges(a, range):
            """
            Determine the outer bin edges to use, from either the data or the range
            argument
            """
            if range is not None:
                first_edge, last_edge = range
                if first_edge > last_edge:
                    raise ValueError(
                        'max must be larger than min in range parameter.')
                if not (np.isfinite(first_edge) and np.isfinite(last_edge)):
                    raise ValueError(
                        "supplied range of [{}, {}] is not finite".format(first_edge, last_edge))
            elif a.size == 0:
                # handle empty arrays. Can't determine range, so use 0-1.
                first_edge, last_edge = 0, 1
            else:
                first_edge, last_edge = a.min(), a.max()
    >           if not (np.isfinite(first_edge) and np.isfinite(last_edge)):
    E           TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
    
    ..\..\..\AppData\Local\Programs\Python\Python310\lib\site-packages\numpy\lib\histograms.py:322: TypeError
    

    Runtime information:

    import sys, numpy; print(numpy.version); print(sys.version) 1.24.1 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (AMD64)]

    print(numpy.show_runtime()) WARNING: threadpoolctl not found in system! Install it by pip install threadpoolctl. Once installed, try np.show_runtime again for more detailed build information [{'simd_extensions': {'baseline': ['SSE', 'SSE2', 'SSE3'], 'found': ['SSSE3', 'SSE41', 'POPCNT', 'SSE42', 'AVX', 'F16C', 'FMA3', 'AVX2'], 'not_found': ['AVX512F', 'AVX512CD', 'AVX512_SKX', 'AVX512_CLX', 'AVX512_CNL', 'AVX512_ICL']}}] None

    Context for the issue:

    No response

    00 - Bug 
    opened by byrdie 0
  • MAINT: Move export for scipy arm64 helper into main module

    MAINT: Move export for scipy arm64 helper into main module

    Backport of #22939.

    This is a follow up to gh-22679 which addressed gh-22673.

    The main thing is that we want the functions to be available after importing NumPy, so they need to be part of multiarray. However, npymath is a static library, so the symbols are not really exported there. The former PR did actually work in practice but this seems like it is technically the right place?

    For some reason, I had to add nextafter to be able to do:

    from scipy.spatial.distance import euclidean
    

    with the SciPy 1.9.3 wheels. SciPy test collection works with this for the 1.9.3 wheel, so this should be all the symbols hopefully.

    03 - Maintenance 08 - Backport 
    opened by charris 2
  • Add append and update keywords to savez

    Add append and update keywords to savez

    This PR adds the keywords append and update to numpy.savez and numpy.savez_compressed.

    I like to store results of lengthy calculations into files such as numpy's npz-files and use these in plotting scripts, which run very often to be refined, etc. If I have to redo some of the calculations but not all, then only some of the results in the output files need updating.

    So I implemented that one can simply append new arrays to existing npz-files and also that one can update arrays in existing npz-files. The latter uses a temporary file, just as the zip-utility with -u. Python also only allows 'r', 'w', 'a', and 'x' with zipfile.ZipFile.

    I am a first time contributor. I do not know the dispatch mechanism. So I followed how it is done in the save function with the _save_dispatcher.

    I added tests. However, python runtests.py --coverage gave already 18 times the same error: E AssertionError: Got warnings: [<warnings.WarningMessage object at 0x1a93b92d0>] in numpy/core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception before starting the PR. This is still the case.

    opened by mcuntz 5
  • BUG: np.mean(axis=0) return incorrect value for a large size float32 array

    BUG: np.mean(axis=0) return incorrect value for a large size float32 array

    Describe the issue:

    For a large size float32 array with second dimension larger than 1, np.mean(axis=0) return incorrect value as shown follow.

    Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)]
    Type 'copyright', 'credits' or 'license' for more information
    IPython 7.22.0 -- An enhanced Interactive Python. Type '?' for help.
    
    In [1]: import numpy as np
    
    In [2]: np.__version__
    Out[2]: '1.24.1'
    
    In [3]: np.ones((20000000, 1), dtype=np.float32).mean(axis=0)
    Out[3]: array([1.], dtype=float32)
    
    In [4]: np.ones((20000000, 2), dtype=np.float32).mean(axis=0)
    Out[4]: array([0.8388608, 0.8388608], dtype=float32)
    
    In [5]: np.ones((20000000, 2), dtype=np.float32).mean()
    Out[5]: 1.0
    

    Reproduce the code example:

    import numpy as np
    # result: [1.]
    print(np.ones((20000000, 1), dtype=np.float32).mean(axis=0))
    # result: [0.8388608, 0.8388608]
    print(np.ones((20000000, 2), dtype=np.float32).mean(axis=0))
    # result: 1.0
    print(np.ones((20000000, 2), dtype=np.float32).mean())
    

    Error message:

    No response

    Runtime information:

    1.24.1 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)]

    Context for the issue:

    No response

    33 - Question 
    opened by cesaryuan 3
  • QUESTION (BUG?): stride of 0 for dimension of size 1 after use of newaxis. Arbitrary strides for dimensions of 1 more generally.

    QUESTION (BUG?): stride of 0 for dimension of size 1 after use of newaxis. Arbitrary strides for dimensions of 1 more generally.

    Describe the issue:

    When using newaxis to add a dimension to an array, the stride of that dimension is set to 0. This is inconsistent with the behaviour of resize(), and results in arr.stride != arr.data.strides.

    It is unclear whether this is actually a bug. The following documentation suggests it is not:

    "Even for contiguous arrays a stride for a given dimension arr.strides[dim] may be arbitrary if arr.shape[dim] == 1 or the array has no elements." https://numpy.org/doc/stable/reference/generated/numpy.ndarray.flags.html

    However, it feels counter-intuitive, and it is not hard to imagine how somebody could naively rely upon a particular value of stride. If this is intentional, it may be worth additional clarification, and probably somewhere more conspicuous.

    Reproduce the code example:

    x1 = np.array([[1,2,3]])
    
    x2 = np.array([1,2,3])
    x2.resize((1,3))
    
    x3 = np.array([1,2,3])[np.newaxis,:]
    
    x1.shape, x2.shape, x3.shape                       # ((1, 3), (1, 3), (1, 3))
    x1.strides, x2.strides, x3.strides                 # ((24, 8), (24, 8), (0, 8))
    x1.data.strides, x2.data.strides, x3.data.strides  # ((24, 8), (24, 8), (24, 8))
    

    Error message:

    No response

    Runtime information:

    1.23.5 3.10.8 (main, Nov 4 2022, 09:21:25) [GCC 12.2.0]

    Context for the issue:

    No response

    00 - Bug 
    opened by gnathand 3
Releases(v1.24.1)
  • v1.24.1(Dec 26, 2022)

    NumPy 1.24.1 Release Notes

    NumPy 1.24.1 is a maintenance release that fixes bugs and regressions discovered after the 1.24.0 release. The Python versions supported by this release are 3.8-3.11.

    Contributors

    A total of 12 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Andrew Nelson
    • Ben Greiner +
    • Charles Harris
    • Clément Robert
    • Matteo Raso
    • Matti Picus
    • Melissa Weber Mendonça
    • Miles Cranmer
    • Ralf Gommers
    • Rohit Goswami
    • Sayed Adel
    • Sebastian Berg

    Pull requests merged

    A total of 18 pull requests were merged for this release.

    • #22820: BLD: add workaround in setup.py for newer setuptools
    • #22830: BLD: CIRRUS_TAG redux
    • #22831: DOC: fix a couple typos in 1.23 notes
    • #22832: BUG: Fix refcounting errors found using pytest-leaks
    • #22834: BUG, SIMD: Fix invalid value encountered in several ufuncs
    • #22837: TST: ignore more np.distutils.log imports
    • #22839: BUG: Do not use getdata() in np.ma.masked_invalid
    • #22847: BUG: Ensure correct behavior for rows ending in delimiter in...
    • #22848: BUG, SIMD: Fix the bitmask of the boolean comparison
    • #22857: BLD: Help raspian arm + clang 13 about __builtin_mul_overflow
    • #22858: API: Ensure a full mask is returned for masked_invalid
    • #22866: BUG: Polynomials now copy properly (#22669)
    • #22867: BUG, SIMD: Fix memory overlap in ufunc comparison loops
    • #22868: BUG: Fortify string casts against floating point warnings
    • #22875: TST: Ignore nan-warnings in randomized out tests
    • #22883: MAINT: restore npymath implementations needed for freebsd
    • #22884: BUG: Fix integer overflow in in1d for mixed integer dtypes #22877
    • #22887: BUG: Use whole file for encoding checks with charset_normalizer.

    Checksums

    MD5

    9e543db90493d6a00939bd54c2012085  numpy-1.24.1-cp310-cp310-macosx_10_9_x86_64.whl
    4ebd7af622bf617b4876087e500d7586  numpy-1.24.1-cp310-cp310-macosx_11_0_arm64.whl
    0c0a3012b438bb455a6c2fadfb1be76a  numpy-1.24.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    0bddb527345449df624d3cb9aa0e1b75  numpy-1.24.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b246beb773689d97307f7b4c2970f061  numpy-1.24.1-cp310-cp310-win32.whl
    1f3823999fce821a28dee10ac6fdd721  numpy-1.24.1-cp310-cp310-win_amd64.whl
    8eedcacd6b096a568e4cb393d43b3ae5  numpy-1.24.1-cp311-cp311-macosx_10_9_x86_64.whl
    50bddb05acd54b4396100a70522496dd  numpy-1.24.1-cp311-cp311-macosx_11_0_arm64.whl
    2a76bd9da8a78b44eb816bd70fa3aee3  numpy-1.24.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    9e86658a414272f9749bde39344f9b76  numpy-1.24.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    915dfb89054e1631574a22a9b53a2b25  numpy-1.24.1-cp311-cp311-win32.whl
    ab7caa2c6c20e1fab977e1a94dede976  numpy-1.24.1-cp311-cp311-win_amd64.whl
    8246de961f813f5aad89bca3d12f81e7  numpy-1.24.1-cp38-cp38-macosx_10_9_x86_64.whl
    58366b1a559baa0547ce976e416ed76d  numpy-1.24.1-cp38-cp38-macosx_11_0_arm64.whl
    a96f29bf106a64f82b9ba412635727d1  numpy-1.24.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    4c32a43bdb85121614ab3e99929e33c7  numpy-1.24.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    09b20949ed21683ad7c9cbdf9ebb2439  numpy-1.24.1-cp38-cp38-win32.whl
    9e9f1577f874286a8bdff8dc5551eb9f  numpy-1.24.1-cp38-cp38-win_amd64.whl
    4383c1137f0287df67c364fbdba2bc72  numpy-1.24.1-cp39-cp39-macosx_10_9_x86_64.whl
    987f22c49b2be084b5d72f88f347d31e  numpy-1.24.1-cp39-cp39-macosx_11_0_arm64.whl
    848ad020bba075ed8f19072c64dcd153  numpy-1.24.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    864b159e644848bc25f881907dbcf062  numpy-1.24.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    db339ec0b2693cac2d7cf9ca75c334b1  numpy-1.24.1-cp39-cp39-win32.whl
    fec91d4c85066ad8a93816d71b627701  numpy-1.24.1-cp39-cp39-win_amd64.whl
    619af9cd4f33b668822ae2350f446a15  numpy-1.24.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    46f19b4b147f8836c2bd34262fabfffa  numpy-1.24.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    e85b245c57a10891b3025579bf0cf298  numpy-1.24.1-pp38-pypy38_pp73-win_amd64.whl
    dd3aaeeada8e95cc2edf9a3a4aa8b5af  numpy-1.24.1.tar.gz
    

    SHA256

    179a7ef0889ab769cc03573b6217f54c8bd8e16cef80aad369e1e8185f994cd7  numpy-1.24.1-cp310-cp310-macosx_10_9_x86_64.whl
    b09804ff570b907da323b3d762e74432fb07955701b17b08ff1b5ebaa8cfe6a9  numpy-1.24.1-cp310-cp310-macosx_11_0_arm64.whl
    f1b739841821968798947d3afcefd386fa56da0caf97722a5de53e07c4ccedc7  numpy-1.24.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    0e3463e6ac25313462e04aea3fb8a0a30fb906d5d300f58b3bc2c23da6a15398  numpy-1.24.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b31da69ed0c18be8b77bfce48d234e55d040793cebb25398e2a7d84199fbc7e2  numpy-1.24.1-cp310-cp310-win32.whl
    b07b40f5fb4fa034120a5796288f24c1fe0e0580bbfff99897ba6267af42def2  numpy-1.24.1-cp310-cp310-win_amd64.whl
    7094891dcf79ccc6bc2a1f30428fa5edb1e6fb955411ffff3401fb4ea93780a8  numpy-1.24.1-cp311-cp311-macosx_10_9_x86_64.whl
    28e418681372520c992805bb723e29d69d6b7aa411065f48216d8329d02ba032  numpy-1.24.1-cp311-cp311-macosx_11_0_arm64.whl
    e274f0f6c7efd0d577744f52032fdd24344f11c5ae668fe8d01aac0422611df1  numpy-1.24.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    0044f7d944ee882400890f9ae955220d29b33d809a038923d88e4e01d652acd9  numpy-1.24.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    442feb5e5bada8408e8fcd43f3360b78683ff12a4444670a7d9e9824c1817d36  numpy-1.24.1-cp311-cp311-win32.whl
    de92efa737875329b052982e37bd4371d52cabf469f83e7b8be9bb7752d67e51  numpy-1.24.1-cp311-cp311-win_amd64.whl
    b162ac10ca38850510caf8ea33f89edcb7b0bb0dfa5592d59909419986b72407  numpy-1.24.1-cp38-cp38-macosx_10_9_x86_64.whl
    26089487086f2648944f17adaa1a97ca6aee57f513ba5f1c0b7ebdabbe2b9954  numpy-1.24.1-cp38-cp38-macosx_11_0_arm64.whl
    caf65a396c0d1f9809596be2e444e3bd4190d86d5c1ce21f5fc4be60a3bc5b36  numpy-1.24.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    b0677a52f5d896e84414761531947c7a330d1adc07c3a4372262f25d84af7bf7  numpy-1.24.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    dae46bed2cb79a58d6496ff6d8da1e3b95ba09afeca2e277628171ca99b99db1  numpy-1.24.1-cp38-cp38-win32.whl
    6ec0c021cd9fe732e5bab6401adea5a409214ca5592cd92a114f7067febcba0c  numpy-1.24.1-cp38-cp38-win_amd64.whl
    28bc9750ae1f75264ee0f10561709b1462d450a4808cd97c013046073ae64ab6  numpy-1.24.1-cp39-cp39-macosx_10_9_x86_64.whl
    84e789a085aabef2f36c0515f45e459f02f570c4b4c4c108ac1179c34d475ed7  numpy-1.24.1-cp39-cp39-macosx_11_0_arm64.whl
    8e669fbdcdd1e945691079c2cae335f3e3a56554e06bbd45d7609a6cf568c700  numpy-1.24.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    ef85cf1f693c88c1fd229ccd1055570cb41cdf4875873b7728b6301f12cd05bf  numpy-1.24.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    87a118968fba001b248aac90e502c0b13606721b1343cdaddbc6e552e8dfb56f  numpy-1.24.1-cp39-cp39-win32.whl
    ddc7ab52b322eb1e40521eb422c4e0a20716c271a306860979d450decbb51b8e  numpy-1.24.1-cp39-cp39-win_amd64.whl
    ed5fb71d79e771ec930566fae9c02626b939e37271ec285e9efaf1b5d4370e7d  numpy-1.24.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    ad2925567f43643f51255220424c23d204024ed428afc5aad0f86f3ffc080086  numpy-1.24.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    cfa1161c6ac8f92dea03d625c2d0c05e084668f4a06568b77a25a89111621566  numpy-1.24.1-pp38-pypy38_pp73-win_amd64.whl
    2386da9a471cc00a1f47845e27d916d5ec5346ae9696e01a8a34760858fe9dd2  numpy-1.24.1.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.24.1-changelog.rst(2.39 KB)
    numpy-1.24.1.tar.gz(10.39 MB)
    README.rst(8.45 KB)
  • v1.24.0(Dec 18, 2022)

    NumPy 1.24 Release Notes

    The NumPy 1.24.0 release continues the ongoing work to improve the handling and promotion of dtypes, increase the execution speed, and clarify the documentation. There are also a large number of new and expired deprecations due to changes in promotion and cleanups. This might be called a deprecation release. Highlights are

    • Many new deprecations, check them out.
    • Many expired deprecations,
    • New F2PY features and fixes.
    • New "dtype" and "casting" keywords for stacking functions.

    See below for the details,

    This release supports Python versions 3.8-3.11.

    Deprecations

    Deprecate fastCopyAndTranspose and PyArray_CopyAndTranspose

    The numpy.fastCopyAndTranspose function has been deprecated. Use the corresponding copy and transpose methods directly:

    arr.T.copy()
    

    The underlying C function PyArray_CopyAndTranspose has also been deprecated from the NumPy C-API.

    (gh-22313)

    Conversion of out-of-bound Python integers

    Attempting a conversion from a Python integer to a NumPy value will now always check whether the result can be represented by NumPy. This means the following examples will fail in the future and give a DeprecationWarning now:

    np.uint8(-1)
    np.array([3000], dtype=np.int8)
    

    Many of these did succeed before. Such code was mainly useful for unsigned integers with negative values such as np.uint8(-1) giving np.iinfo(np.uint8).max.

    Note that conversion between NumPy integers is unaffected, so that np.array(-1).astype(np.uint8) continues to work and use C integer overflow logic. For negative values, it will also work to view the array: np.array(-1, dtype=np.int8).view(np.uint8). In some cases, using np.iinfo(np.uint8).max or val % 2**8 may also work well.

    In rare cases input data may mix both negative values and very large unsigned values (i.e. -1 and 2**63). There it is unfortunately necessary to use % on the Python value or use signed or unsigned conversion depending on whether negative values are expected.

    (gh-22385)

    Deprecate msort

    The numpy.msort function is deprecated. Use np.sort(a, axis=0) instead.

    (gh-22456)

    np.str0 and similar are now deprecated

    The scalar type aliases ending in a 0 bit size: np.object0, np.str0, np.bytes0, np.void0, np.int0, np.uint0 as well as np.bool8 are now deprecated and will eventually be removed.

    (gh-22607)

    Expired deprecations

    • The normed keyword argument has been removed from [np.histogram]{.title-ref}, [np.histogram2d]{.title-ref}, and [np.histogramdd]{.title-ref}. Use density instead. If normed was passed by position, density is now used.

      (gh-21645)

    • Ragged array creation will now always raise a ValueError unless dtype=object is passed. This includes very deeply nested sequences.

      (gh-22004)

    • Support for Visual Studio 2015 and earlier has been removed.

    • Support for the Windows Interix POSIX interop layer has been removed.

      (gh-22139)

    • Support for Cygwin < 3.3 has been removed.

      (gh-22159)

    • The mini() method of np.ma.MaskedArray has been removed. Use either np.ma.MaskedArray.min() or np.ma.minimum.reduce().

    • The single-argument form of np.ma.minimum and np.ma.maximum has been removed. Use np.ma.minimum.reduce() or np.ma.maximum.reduce() instead.

      (gh-22228)

    • Passing dtype instances other than the canonical (mainly native byte-order) ones to dtype= or signature= in ufuncs will now raise a TypeError. We recommend passing the strings "int8" or scalar types np.int8 since the byte-order, datetime/timedelta unit, etc. are never enforced. (Initially deprecated in NumPy 1.21.)

      (gh-22540)

    • The dtype= argument to comparison ufuncs is now applied correctly. That means that only bool and object are valid values and dtype=object is enforced.

      (gh-22541)

    • The deprecation for the aliases np.object, np.bool, np.float, np.complex, np.str, and np.int is expired (introduces NumPy 1.20). Some of these will now give a FutureWarning in addition to raising an error since they will be mapped to the NumPy scalars in the future.

      (gh-22607)

    Compatibility notes

    array.fill(scalar) may behave slightly different

    numpy.ndarray.fill may in some cases behave slightly different now due to the fact that the logic is aligned with item assignment:

    arr = np.array([1])  # with any dtype/value
    arr.fill(scalar)
    # is now identical to:
    arr[0] = scalar
    

    Previously casting may have produced slightly different answers when using values that could not be represented in the target dtype or when the target had object dtype.

    (gh-20924)

    Subarray to object cast now copies

    Casting a dtype that includes a subarray to an object will now ensure a copy of the subarray. Previously an unsafe view was returned:

    arr = np.ones(3, dtype=[("f", "i", 3)])
    subarray_fields = arr.astype(object)[0]
    subarray = subarray_fields[0]  # "f" field
    
    np.may_share_memory(subarray, arr)
    

    Is now always false. While previously it was true for the specific cast.

    (gh-21925)

    Returned arrays respect uniqueness of dtype kwarg objects

    When the dtype keyword argument is used with :pynp.array(){.interpreted-text role="func"} or :pyasarray(){.interpreted-text role="func"}, the dtype of the returned array now always exactly matches the dtype provided by the caller.

    In some cases this change means that a view rather than the input array is returned. The following is an example for this on 64bit Linux where long and longlong are the same precision but different dtypes:

    >>> arr = np.array([1, 2, 3], dtype="long")
    >>> new_dtype = np.dtype("longlong")
    >>> new = np.asarray(arr, dtype=new_dtype)
    >>> new.dtype is new_dtype
    True
    >>> new is arr
    False
    

    Before the change, the dtype did not match because new is arr was True.

    (gh-21995)

    DLPack export raises BufferError

    When an array buffer cannot be exported via DLPack a BufferError is now always raised where previously TypeError or RuntimeError was raised. This allows falling back to the buffer protocol or __array_interface__ when DLPack was tried first.

    (gh-22542)

    NumPy builds are no longer tested on GCC-6

    Ubuntu 18.04 is deprecated for GitHub actions and GCC-6 is not available on Ubuntu 20.04, so builds using that compiler are no longer tested. We still test builds using GCC-7 and GCC-8.

    (gh-22598)

    New Features

    New attribute symbol added to polynomial classes

    The polynomial classes in the numpy.polynomial package have a new symbol attribute which is used to represent the indeterminate of the polynomial. This can be used to change the value of the variable when printing:

    >>> P_y = np.polynomial.Polynomial([1, 0, -1], symbol="y")
    >>> print(P_y)
    1.0 + 0.0·y¹ - 1.0·y²
    

    Note that the polynomial classes only support 1D polynomials, so operations that involve polynomials with different symbols are disallowed when the result would be multivariate:

    >>> P = np.polynomial.Polynomial([1, -1])  # default symbol is "x"
    >>> P_z = np.polynomial.Polynomial([1, 1], symbol="z")
    >>> P * P_z
    Traceback (most recent call last)
       ...
    ValueError: Polynomial symbols differ
    

    The symbol can be any valid Python identifier. The default is symbol=x, consistent with existing behavior.

    (gh-16154)

    F2PY support for Fortran character strings

    F2PY now supports wrapping Fortran functions with:

    • character (e.g. character x)
    • character array (e.g. character, dimension(n) :: x)
    • character string (e.g. character(len=10) x)
    • and character string array (e.g. character(len=10), dimension(n, m) :: x)

    arguments, including passing Python unicode strings as Fortran character string arguments.

    (gh-19388)

    New function np.show_runtime

    A new function numpy.show_runtime has been added to display the runtime information of the machine in addition to numpy.show_config which displays the build-related information.

    (gh-21468)

    strict option for testing.assert_array_equal

    The strict option is now available for testing.assert_array_equal. Setting strict=True will disable the broadcasting behaviour for scalars and ensure that input arrays have the same data type.

    (gh-21595)

    New parameter equal_nan added to np.unique

    np.unique was changed in 1.21 to treat all NaN values as equal and return a single NaN. Setting equal_nan=False will restore pre-1.21 behavior to treat NaNs as unique. Defaults to True.

    (gh-21623)

    casting and dtype keyword arguments for numpy.stack

    The casting and dtype keyword arguments are now available for numpy.stack. To use them, write np.stack(..., dtype=None, casting='same_kind').

    casting and dtype keyword arguments for numpy.vstack

    The casting and dtype keyword arguments are now available for numpy.vstack. To use them, write np.vstack(..., dtype=None, casting='same_kind').

    casting and dtype keyword arguments for numpy.hstack

    The casting and dtype keyword arguments are now available for numpy.hstack. To use them, write np.hstack(..., dtype=None, casting='same_kind').

    (gh-21627)

    The bit generator underlying the singleton RandomState can be changed

    The singleton RandomState instance exposed in the numpy.random module is initialized at startup with the MT19937 bit generator. The new function set_bit_generator allows the default bit generator to be replaced with a user-provided bit generator. This function has been introduced to provide a method allowing seamless integration of a high-quality, modern bit generator in new code with existing code that makes use of the singleton-provided random variate generating functions. The companion function get_bit_generator returns the current bit generator being used by the singleton RandomState. This is provided to simplify restoring the original source of randomness if required.

    The preferred method to generate reproducible random numbers is to use a modern bit generator in an instance of Generator. The function default_rng simplifies instantiation:

    >>> rg = np.random.default_rng(3728973198)
    >>> rg.random()
    

    The same bit generator can then be shared with the singleton instance so that calling functions in the random module will use the same bit generator:

    >>> orig_bit_gen = np.random.get_bit_generator()
    >>> np.random.set_bit_generator(rg.bit_generator)
    >>> np.random.normal()
    

    The swap is permanent (until reversed) and so any call to functions in the random module will use the new bit generator. The original can be restored if required for code to run correctly:

    >>> np.random.set_bit_generator(orig_bit_gen)
    

    (gh-21976)

    np.void now has a dtype argument

    NumPy now allows constructing structured void scalars directly by passing the dtype argument to np.void.

    (gh-22316)

    Improvements

    F2PY Improvements

    • The generated extension modules don't use the deprecated NumPy-C API anymore
    • Improved f2py generated exception messages
    • Numerous bug and flake8 warning fixes
    • various CPP macros that one can use within C-expressions of signature files are prefixed with f2py_. For example, one should use f2py_len(x) instead of len(x)
    • A new construct character(f2py_len=...) is introduced to support returning assumed length character strings (e.g. character(len=*)) from wrapper functions

    A hook to support rewriting f2py internal data structures after reading all its input files is introduced. This is required, for instance, for BC of SciPy support where character arguments are treated as character strings arguments in C expressions.

    (gh-19388)

    IBM zSystems Vector Extension Facility (SIMD)

    Added support for SIMD extensions of zSystem (z13, z14, z15), through the universal intrinsics interface. This support leads to performance improvements for all SIMD kernels implemented using the universal intrinsics, including the following operations: rint, floor, trunc, ceil, sqrt, absolute, square, reciprocal, tanh, sin, cos, equal, not_equal, greater, greater_equal, less, less_equal, maximum, minimum, fmax, fmin, argmax, argmin, add, subtract, multiply, divide.

    (gh-20913)

    NumPy now gives floating point errors in casts

    In most cases, NumPy previously did not give floating point warnings or errors when these happened during casts. For examples, casts like:

    np.array([2e300]).astype(np.float32)  # overflow for float32
    np.array([np.inf]).astype(np.int64)
    

    Should now generally give floating point warnings. These warnings should warn that floating point overflow occurred. For errors when converting floating point values to integers users should expect invalid value warnings.

    Users can modify the behavior of these warnings using np.errstate.

    Note that for float to int casts, the exact warnings that are given may be platform dependent. For example:

    arr = np.full(100, value=1000, dtype=np.float64)
    arr.astype(np.int8)
    

    May give a result equivalent to (the intermediate cast means no warning is given):

    arr.astype(np.int64).astype(np.int8)
    

    May return an undefined result, with a warning set:

    RuntimeWarning: invalid value encountered in cast
    

    The precise behavior is subject to the C99 standard and its implementation in both software and hardware.

    (gh-21437)

    F2PY supports the value attribute

    The Fortran standard requires that variables declared with the value attribute must be passed by value instead of reference. F2PY now supports this use pattern correctly. So integer, intent(in), value :: x in Fortran codes will have correct wrappers generated.

    (gh-21807)

    Added pickle support for third-party BitGenerators

    The pickle format for bit generators was extended to allow each bit generator to supply its own constructor when during pickling. Previous versions of NumPy only supported unpickling Generator instances created with one of the core set of bit generators supplied with NumPy. Attempting to unpickle a Generator that used a third-party bit generators would fail since the constructor used during the unpickling was only aware of the bit generators included in NumPy.

    (gh-22014)

    arange() now explicitly fails with dtype=str

    Previously, the np.arange(n, dtype=str) function worked for n=1 and n=2, but would raise a non-specific exception message for other values of n. Now, it raises a [TypeError]{.title-ref} informing that arange does not support string dtypes:

    >>> np.arange(2, dtype=str)
    Traceback (most recent call last)
       ...
    TypeError: arange() not supported for inputs with DType <class 'numpy.dtype[str_]'>.
    

    (gh-22055)

    numpy.typing protocols are now runtime checkable

    The protocols used in numpy.typing.ArrayLike and numpy.typing.DTypeLike are now properly marked as runtime checkable, making them easier to use for runtime type checkers.

    (gh-22357)

    Performance improvements and changes

    Faster version of np.isin and np.in1d for integer arrays

    np.in1d (used by np.isin) can now switch to a faster algorithm (up to >10x faster) when it is passed two integer arrays. This is often automatically used, but you can use kind="sort" or kind="table" to force the old or new method, respectively.

    (gh-12065)

    Faster comparison operators

    The comparison functions (numpy.equal, numpy.not_equal, numpy.less, numpy.less_equal, numpy.greater and numpy.greater_equal) are now much faster as they are now vectorized with universal intrinsics. For a CPU with SIMD extension AVX512BW, the performance gain is up to 2.57x, 1.65x and 19.15x for integer, float and boolean data types, respectively (with N=50000).

    (gh-21483)

    Changes

    Better reporting of integer division overflow

    Integer division overflow of scalars and arrays used to provide a RuntimeWarning and the return value was undefined leading to crashes at rare occasions:

    >>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
    <stdin>:1: RuntimeWarning: divide by zero encountered in floor_divide
    array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32)
    

    Integer division overflow now returns the input dtype's minimum value and raise the following RuntimeWarning:

    >>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
    <stdin>:1: RuntimeWarning: overflow encountered in floor_divide
    array([-2147483648, -2147483648, -2147483648, -2147483648, -2147483648,
           -2147483648, -2147483648, -2147483648, -2147483648, -2147483648],
          dtype=int32)
    

    (gh-21506)

    masked_invalid now modifies the mask in-place

    When used with copy=False, numpy.ma.masked_invalid now modifies the input masked array in-place. This makes it behave identically to masked_where and better matches the documentation.

    (gh-22046)

    nditer/NpyIter allows all allocating all operands

    The NumPy iterator available through np.nditer in Python and as NpyIter in C now supports allocating all arrays. The iterator shape defaults to () in this case. The operands dtype must be provided, since a "common dtype" cannot be inferred from the other inputs.

    (gh-22457)

    Checksums

    MD5

    d60311246bd71b177258ce06e2a4ec57  numpy-1.24.0-cp310-cp310-macosx_10_9_x86_64.whl
    02022b335938af55cb83bbaebdbff8e1  numpy-1.24.0-cp310-cp310-macosx_11_0_arm64.whl
    02b35d6612369fcc614c6223aaec0119  numpy-1.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7b8ad389a9619db3e1f8243fc0cfe63d  numpy-1.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    6ff4acbb7b1258ccbd528c151eb0fe84  numpy-1.24.0-cp310-cp310-win32.whl
    d194c96601222db97b0af54fce1cfb1d  numpy-1.24.0-cp310-cp310-win_amd64.whl
    5fe4eb551a9312e37492da9f5bfb8545  numpy-1.24.0-cp311-cp311-macosx_10_9_x86_64.whl
    a8e836a768f73e9f509b11c3873c7e09  numpy-1.24.0-cp311-cp311-macosx_11_0_arm64.whl
    10404d6d1a5a9624f85018f61110b2be  numpy-1.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    cfdb0cb844f1db9be2cde998be54d65f  numpy-1.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    73bc66ad3ae8656ba18d64db98feb5e1  numpy-1.24.0-cp311-cp311-win32.whl
    4bbc30a53009c48d364d4dc2c612af95  numpy-1.24.0-cp311-cp311-win_amd64.whl
    94ce5f6a09605a9675a0d464b1ec6597  numpy-1.24.0-cp38-cp38-macosx_10_9_x86_64.whl
    e5e42b69a209eda7e6895dda39ea8610  numpy-1.24.0-cp38-cp38-macosx_11_0_arm64.whl
    36eb6143d1e2aac3c618275edf636983  numpy-1.24.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    712c3718e8b53ff04c626cc4c78492aa  numpy-1.24.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    0a1a48a8e458bd4ce581169484c17e4f  numpy-1.24.0-cp38-cp38-win32.whl
    c8ab7e4b919548663568a5b5a8b5eab4  numpy-1.24.0-cp38-cp38-win_amd64.whl
    1783a5d769566111d93c474c79892c01  numpy-1.24.0-cp39-cp39-macosx_10_9_x86_64.whl
    c9e77130674372c73f8209d58396624d  numpy-1.24.0-cp39-cp39-macosx_11_0_arm64.whl
    14c0f2f52f20f13a81bba7df27f30145  numpy-1.24.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    c106393b46fa0302dbac49b14a4dfed4  numpy-1.24.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    c83e6d6946f32820f166c3f1ff010ab6  numpy-1.24.0-cp39-cp39-win32.whl
    acd5a4737d1094d5f40afa584dbd6d79  numpy-1.24.0-cp39-cp39-win_amd64.whl
    26e32f942c9fd62f64fd9bf6df95b5b1  numpy-1.24.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    4f027df0cc313ca626b106849999de13  numpy-1.24.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ac58db9a90d0bec95bc7850b9e462f34  numpy-1.24.0-pp38-pypy38_pp73-win_amd64.whl
    1ca41c84ad9a116402a025d21e35bc64  numpy-1.24.0.tar.gz
    

    SHA256

    6e73a1f4f5b74a42abb55bc2b3d869f1b38cbc8776da5f8b66bf110284f7a437  numpy-1.24.0-cp310-cp310-macosx_10_9_x86_64.whl
    9387c7d6d50e8f8c31e7bfc034241e9c6f4b3eb5db8d118d6487047b922f82af  numpy-1.24.0-cp310-cp310-macosx_11_0_arm64.whl
    7ad6a024a32ee61d18f5b402cd02e9c0e22c0fb9dc23751991b3a16d209d972e  numpy-1.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    73cf2c5b5a07450f20a0c8e04d9955491970177dce8df8d6903bf253e53268e0  numpy-1.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    cec79ff3984b2d1d103183fc4a3361f5b55bbb66cb395cbf5a920a4bb1fd588d  numpy-1.24.0-cp310-cp310-win32.whl
    4f5e78b8b710cd7cd1a8145994cfffc6ddd5911669a437777d8cedfce6c83a98  numpy-1.24.0-cp310-cp310-win_amd64.whl
    4445f472b246cad6514cc09fbb5ecb7aab09ca2acc3c16f29f8dca6c468af501  numpy-1.24.0-cp311-cp311-macosx_10_9_x86_64.whl
    ec3e5e8172a0a6a4f3c2e7423d4a8434c41349141b04744b11a90e017a95bad5  numpy-1.24.0-cp311-cp311-macosx_11_0_arm64.whl
    f9168790149f917ad8e3cf5047b353fefef753bd50b07c547da0bdf30bc15d91  numpy-1.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    ada6c1e9608ceadaf7020e1deea508b73ace85560a16f51bef26aecb93626a72  numpy-1.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f3c4a9a9f92734a4728ddbd331e0124eabbc968a0359a506e8e74a9b0d2d419b  numpy-1.24.0-cp311-cp311-win32.whl
    90075ef2c6ac6397d0035bcd8b298b26e481a7035f7a3f382c047eb9c3414db0  numpy-1.24.0-cp311-cp311-win_amd64.whl
    0885d9a7666cafe5f9876c57bfee34226e2b2847bfb94c9505e18d81011e5401  numpy-1.24.0-cp38-cp38-macosx_10_9_x86_64.whl
    e63d2157f9fc98cc178870db83b0e0c85acdadd598b134b00ebec9e0db57a01f  numpy-1.24.0-cp38-cp38-macosx_11_0_arm64.whl
    cf8960f72997e56781eb1c2ea256a70124f92a543b384f89e5fb3503a308b1d3  numpy-1.24.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    2f8e0df2ecc1928ef7256f18e309c9d6229b08b5be859163f5caa59c93d53646  numpy-1.24.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    fe44e925c68fb5e8db1334bf30ac1a1b6b963b932a19cf41d2e899cf02f36aab  numpy-1.24.0-cp38-cp38-win32.whl
    d7f223554aba7280e6057727333ed357b71b7da7422d02ff5e91b857888c25d1  numpy-1.24.0-cp38-cp38-win_amd64.whl
    ab11f6a7602cf8ea4c093e091938207de3068c5693a0520168ecf4395750f7ea  numpy-1.24.0-cp39-cp39-macosx_10_9_x86_64.whl
    12bba5561d8118981f2f1ff069ecae200c05d7b6c78a5cdac0911f74bc71cbd1  numpy-1.24.0-cp39-cp39-macosx_11_0_arm64.whl
    9af91f794d2d3007d91d749ebc955302889261db514eb24caef30e03e8ec1e41  numpy-1.24.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8b1ddfac6a82d4f3c8e99436c90b9c2c68c0bb14658d1684cdd00f05fab241f5  numpy-1.24.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ac4fe68f1a5a18136acebd4eff91aab8bed00d1ef2fdb34b5d9192297ffbbdfc  numpy-1.24.0-cp39-cp39-win32.whl
    667b5b1f6a352419e340f6475ef9930348ae5cb7fca15f2cc3afcb530823715e  numpy-1.24.0-cp39-cp39-win_amd64.whl
    4d01f7832fa319a36fd75ba10ea4027c9338ede875792f7bf617f4b45056fc3a  numpy-1.24.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    dbb0490f0a880700a6cc4d000384baf19c1f4df59fff158d9482d4dbbca2b239  numpy-1.24.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    0104d8adaa3a4cc60c2777cab5196593bf8a7f416eda133be1f3803dd0838886  numpy-1.24.0-pp38-pypy38_pp73-win_amd64.whl
    c4ab7c9711fe6b235e86487ca74c1b092a6dd59a3cb45b63241ea0a148501853  numpy-1.24.0.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.24.0-changelog.rst(51.05 KB)
    numpy-1.24.0.tar.gz(10.39 MB)
    README.rst(26.20 KB)
  • v1.24.0rc2(Dec 4, 2022)

    NumPy 1.24 Release Notes

    The NumPy 1.24.0 release continues the ongoing work to improve the handling and promotion of dtypes, increase the execution speed, and clarify the documentation. There are also a large number of new and expired deprecations due to changes in promotion and cleanups. This might be called a deprecation release. Highlights are

    • Many new deprecations, check them out.
    • Many expired deprecations,
    • New F2PY features and fixes.
    • New "dtype" and "casting" keywords for stacking functions.

    See below for the details,

    Deprecations

    Deprecate fastCopyAndTranspose and PyArray_CopyAndTranspose

    The numpy.fastCopyAndTranspose function has been deprecated. Use the corresponding copy and transpose methods directly:

    arr.T.copy()
    

    The underlying C function PyArray_CopyAndTranspose has also been deprecated from the NumPy C-API.

    (gh-22313)

    Conversion of out-of-bound Python integers

    Attempting a conversion from a Python integer to a NumPy value will now always check whether the result can be represented by NumPy. This means the following examples will fail in the future and give a DeprecationWarning now:

    np.uint8(-1)
    np.array([3000], dtype=np.int8)
    

    Many of these did succeed before. Such code was mainly useful for unsigned integers with negative values such as np.uint8(-1) giving np.iinfo(np.uint8).max.

    Note that conversion between NumPy integers is unaffected, so that np.array(-1).astype(np.uint8) continues to work and use C integer overflow logic.

    (gh-22393)

    Deprecate msort

    The numpy.msort function is deprecated. Use np.sort(a, axis=0) instead.

    (gh-22456)

    np.str0 and similar are now deprecated

    The scalar type aliases ending in a 0 bit size: np.object0, np.str0, np.bytes0, np.void0, np.int0, np.uint0 as well as np.bool8 are now deprecated and will eventually be removed.

    (gh-22607)

    Expired deprecations

    • The normed keyword argument has been removed from [np.histogram]{.title-ref}, [np.histogram2d]{.title-ref}, and [np.histogramdd]{.title-ref}. Use density instead. If normed was passed by position, density is now used.

      (gh-21645)

    • Ragged array creation will now always raise a ValueError unless dtype=object is passed. This includes very deeply nested sequences.

      (gh-22004)

    • Support for Visual Studio 2015 and earlier has been removed.

    • Support for the Windows Interix POSIX interop layer has been removed.

      (gh-22139)

    • Support for cygwin < 3.3 has been removed.

      (gh-22159)

    • The mini() method of np.ma.MaskedArray has been removed. Use either np.ma.MaskedArray.min() or np.ma.minimum.reduce().

    • The single-argument form of np.ma.minimum and np.ma.maximum has been removed. Use np.ma.minimum.reduce() or np.ma.maximum.reduce() instead.

      (gh-22228)

    • Passing dtype instances other than the canonical (mainly native byte-order) ones to dtype= or signature= in ufuncs will now raise a TypeError. We recommend passing the strings "int8" or scalar types np.int8 since the byte-order, datetime/timedelta unit, etc. are never enforced. (Initially deprecated in NumPy 1.21.)

      (gh-22540)

    • The dtype= argument to comparison ufuncs is now applied correctly. That means that only bool and object are valid values and dtype=object is enforced.

      (gh-22541)

    • The deprecation for the aliases np.object, np.bool, np.float, np.complex, np.str, and np.int is expired (introduces NumPy 1.20). Some of these will now give a FutureWarning in addition to raising an error since they will be mapped to the NumPy scalars in the future.

      (gh-22607)

    Compatibility notes

    array.fill(scalar) may behave slightly different

    numpy.ndarray.fill may in some cases behave slightly different now due to the fact that the logic is aligned with item assignment:

    arr = np.array([1])  # with any dtype/value
    arr.fill(scalar)
    # is now identical to:
    arr[0] = scalar
    

    Previously casting may have produced slightly different answers when using values that could not be represented in the target dtype or when the target had object dtype.

    (gh-20924)

    Subarray to object cast now copies

    Casting a dtype that includes a subarray to an object will now ensure a copy of the subarray. Previously an unsafe view was returned:

    arr = np.ones(3, dtype=[("f", "i", 3)])
    subarray_fields = arr.astype(object)[0]
    subarray = subarray_fields[0]  # "f" field
    
    np.may_share_memory(subarray, arr)
    

    Is now always false. While previously it was true for the specific cast.

    (gh-21925)

    Returned arrays respect uniqueness of dtype kwarg objects

    When the dtype keyword argument is used with :pynp.array(){.interpreted-text role="func"} or :pyasarray(){.interpreted-text role="func"}, the dtype of the returned array now always exactly matches the dtype provided by the caller.

    In some cases this change means that a view rather than the input array is returned. The following is an example for this on 64bit Linux where long and longlong are the same precision but different dtypes:

    >>> arr = np.array([1, 2, 3], dtype="long")
    >>> new_dtype = np.dtype("longlong")
    >>> new = np.asarray(arr, dtype=new_dtype)
    >>> new.dtype is new_dtype
    True
    >>> new is arr
    False
    

    Before the change, the dtype did not match because new is arr was True.

    (gh-21995)

    DLPack export raises BufferError

    When an array buffer cannot be exported via DLPack a BufferError is now always raised where previously TypeError or RuntimeError was raised. This allows falling back to the buffer protocol or __array_interface__ when DLPack was tried first.

    (gh-22542)

    NumPy builds are no longer tested on GCC-6

    Ubuntu 18.04 is deprecated for GitHub actions and GCC-6 is not available on Ubuntu 20.04, so builds using that compiler are no longer tested. We still test builds using GCC-7 and GCC-8.

    (gh-22598)

    New Features

    New attribute symbol added to polynomial classes

    The polynomial classes in the numpy.polynomial package have a new symbol attribute which is used to represent the indeterminate of the polynomial. This can be used to change the value of the variable when printing:

    >>> P_y = np.polynomial.Polynomial([1, 0, -1], symbol="y")
    >>> print(P_y)
    1.0 + 0.0·y¹ - 1.0·y²
    

    Note that the polynomial classes only support 1D polynomials, so operations that involve polynomials with different symbols are disallowed when the result would be multivariate:

    >>> P = np.polynomial.Polynomial([1, -1])  # default symbol is "x"
    >>> P_z = np.polynomial.Polynomial([1, 1], symbol="z")
    >>> P * P_z
    Traceback (most recent call last)
       ...
    ValueError: Polynomial symbols differ
    

    The symbol can be any valid Python identifier. The default is symbol=x, consistent with existing behavior.

    (gh-16154)

    F2PY support for Fortran character strings

    F2PY now supports wrapping Fortran functions with:

    • character (e.g. character x)
    • character array (e.g. character, dimension(n) :: x)
    • character string (e.g. character(len=10) x)
    • and character string array (e.g. character(len=10), dimension(n, m) :: x)

    arguments, including passing Python unicode strings as Fortran character string arguments.

    (gh-19388)

    New function np.show_runtime

    A new function numpy.show_runtime has been added to display the runtime information of the machine in addition to numpy.show_config which displays the build-related information.

    (gh-21468)

    strict option for testing.assert_array_equal

    The strict option is now available for testing.assert_array_equal. Setting strict=True will disable the broadcasting behaviour for scalars and ensure that input arrays have the same data type.

    (gh-21595)

    New parameter equal_nan added to np.unique

    np.unique was changed in 1.21 to treat all NaN values as equal and return a single NaN. Setting equal_nan=False will restore pre-1.21 behavior to treat NaNs as unique. Defaults to True.

    (gh-21623)

    casting and dtype keyword arguments for numpy.stack

    The casting and dtype keyword arguments are now available for numpy.stack. To use them, write np.stack(..., dtype=None, casting='same_kind').

    casting and dtype keyword arguments for numpy.vstack

    The casting and dtype keyword arguments are now available for numpy.vstack. To use them, write np.vstack(..., dtype=None, casting='same_kind').

    casting and dtype keyword arguments for numpy.hstack

    The casting and dtype keyword arguments are now available for numpy.hstack. To use them, write np.hstack(..., dtype=None, casting='same_kind').

    (gh-21627)

    The bit generator underlying the singleton RandomState can be changed

    The singleton RandomState instance exposed in the numpy.random module is initialized at startup with the MT19937 bit generator. The new function set_bit_generator allows the default bit generator to be replaced with a user-provided bit generator. This function has been introduced to provide a method allowing seamless integration of a high-quality, modern bit generator in new code with existing code that makes use of the singleton-provided random variate generating functions. The companion function get_bit_generator returns the current bit generator being used by the singleton RandomState. This is provided to simplify restoring the original source of randomness if required.

    The preferred method to generate reproducible random numbers is to use a modern bit generator in an instance of Generator. The function default_rng simplifies instantiation:

    >>> rg = np.random.default_rng(3728973198)
    >>> rg.random()
    

    The same bit generator can then be shared with the singleton instance so that calling functions in the random module will use the same bit generator:

    >>> orig_bit_gen = np.random.get_bit_generator()
    >>> np.random.set_bit_generator(rg.bit_generator)
    >>> np.random.normal()
    

    The swap is permanent (until reversed) and so any call to functions in the random module will use the new bit generator. The original can be restored if required for code to run correctly:

    >>> np.random.set_bit_generator(orig_bit_gen)
    

    (gh-21976)

    np.void now has a dtype argument

    NumPy now allows constructing structured void scalars directly by passing the dtype argument to np.void.

    (gh-22316)

    Improvements

    F2PY Improvements

    • The generated extension modules don't use the deprecated NumPy-C API anymore
    • Improved f2py generated exception messages
    • Numerous bug and flake8 warning fixes
    • various CPP macros that one can use within C-expressions of signature files are prefixed with f2py_. For example, one should use f2py_len(x) instead of len(x)
    • A new construct character(f2py_len=...) is introduced to support returning assumed length character strings (e.g. character(len=*)) from wrapper functions

    A hook to support rewriting f2py internal data structures after reading all its input files is introduced. This is required, for instance, for BC of SciPy support where character arguments are treated as character strings arguments in C expressions.

    (gh-19388)

    IBM zSystems Vector Extension Facility (SIMD)

    Added support for SIMD extensions of zSystem (z13, z14, z15), through the universal intrinsics interface. This support leads to performance improvements for all SIMD kernels implemented using the universal intrinsics, including the following operations: rint, floor, trunc, ceil, sqrt, absolute, square, reciprocal, tanh, sin, cos, equal, not_equal, greater, greater_equal, less, less_equal, maximum, minimum, fmax, fmin, argmax, argmin, add, subtract, multiply, divide.

    (gh-20913)

    NumPy now gives floating point errors in casts

    In most cases, NumPy previously did not give floating point warnings or errors when these happened during casts. For examples, casts like:

    np.array([2e300]).astype(np.float32)  # overflow for float32
    np.array([np.inf]).astype(np.int64)
    

    Should now generally give floating point warnings. These warnings should warn that floating point overflow occurred. For errors when converting floating point values to integers users should expect invalid value warnings.

    Users can modify the behavior of these warnings using np.errstate.

    Note that for float to int casts, the exact warnings that are given may be platform dependent. For example:

    arr = np.full(100, value=1000, dtype=np.float64)
    arr.astype(np.int8)
    

    May give a result equivalent to (the intermediate cast means no warning is given):

    arr.astype(np.int64).astype(np.int8)
    

    May return an undefined result, with a warning set:

    RuntimeWarning: invalid value encountered in cast
    

    The precise behavior is subject to the C99 standard and its implementation in both software and hardware.

    (gh-21437)

    F2PY supports the value attribute

    The Fortran standard requires that variables declared with the value attribute must be passed by value instead of reference. F2PY now supports this use pattern correctly. So integer, intent(in), value :: x in Fortran codes will have correct wrappers generated.

    (gh-21807)

    Added pickle support for third-party BitGenerators

    The pickle format for bit generators was extended to allow each bit generator to supply its own constructor when during pickling. Previous versions of NumPy only supported unpickling Generator instances created with one of the core set of bit generators supplied with NumPy. Attempting to unpickle a Generator that used a third-party bit generators would fail since the constructor used during the unpickling was only aware of the bit generators included in NumPy.

    (gh-22014)

    arange() now explicitly fails with dtype=str

    Previously, the np.arange(n, dtype=str) function worked for n=1 and n=2, but would raise a non-specific exception message for other values of n. Now, it raises a [TypeError]{.title-ref} informing that arange does not support string dtypes:

    >>> np.arange(2, dtype=str)
    Traceback (most recent call last)
       ...
    TypeError: arange() not supported for inputs with DType <class 'numpy.dtype[str_]'>.
    

    (gh-22055)

    numpy.typing protocols are now runtime checkable

    The protocols used in numpy.typing.ArrayLike and numpy.typing.DTypeLike are now properly marked as runtime checkable, making them easier to use for runtime type checkers.

    (gh-22357)

    Performance improvements and changes

    Faster version of np.isin and np.in1d for integer arrays

    np.in1d (used by np.isin) can now switch to a faster algorithm (up to >10x faster) when it is passed two integer arrays. This is often automatically used, but you can use kind="sort" or kind="table" to force the old or new method, respectively.

    (gh-12065)

    Faster comparison operators

    The comparison functions (numpy.equal, numpy.not_equal, numpy.less, numpy.less_equal, numpy.greater and numpy.greater_equal) are now much faster as they are now vectorized with universal intrinsics. For a CPU with SIMD extension AVX512BW, the performance gain is up to 2.57x, 1.65x and 19.15x for integer, float and boolean data types, respectively (with N=50000).

    (gh-21483)

    Changes

    Better reporting of integer division overflow

    Integer division overflow of scalars and arrays used to provide a RuntimeWarning and the return value was undefined leading to crashes at rare occasions:

    >>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
    <stdin>:1: RuntimeWarning: divide by zero encountered in floor_divide
    array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32)
    

    Integer division overflow now returns the input dtype's minimum value and raise the following RuntimeWarning:

    >>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
    <stdin>:1: RuntimeWarning: overflow encountered in floor_divide
    array([-2147483648, -2147483648, -2147483648, -2147483648, -2147483648,
           -2147483648, -2147483648, -2147483648, -2147483648, -2147483648],
          dtype=int32)
    

    (gh-21506)

    masked_invalid now modifies the mask in-place

    When used with copy=False, numpy.ma.masked_invalid now modifies the input masked array in-place. This makes it behave identically to masked_where and better matches the documentation.

    (gh-22046)

    nditer/NpyIter allows all allocating all operands

    The NumPy iterator available through np.nditer in Python and as NpyIter in C now supports allocating all arrays. The iterator shape defaults to () in this case. The operands dtype must be provided, since a "common dtype" cannot be inferred from the other inputs.

    (gh-22457)

    Checksums

    MD5

    0f45cfebcb56027a7c9fc14577082789  numpy-1.24.0rc2-cp310-cp310-macosx_10_9_x86_64.whl
    c895f8af0f548ba2bbb948119a151cf7  numpy-1.24.0rc2-cp310-cp310-macosx_11_0_arm64.whl
    4552d324786e3c05732135c59a73fbc6  numpy-1.24.0rc2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    99e4634eb1474e8c443cd6cee5dbc39e  numpy-1.24.0rc2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f0304cb2aa708dfe1e0aa16cdfa3046d  numpy-1.24.0rc2-cp310-cp310-win32.whl
    501424e62329ac7996be850a2fc58963  numpy-1.24.0rc2-cp310-cp310-win_amd64.whl
    2b6a65ea122eaffb2f3b5643b1ce1ec4  numpy-1.24.0rc2-cp311-cp311-macosx_10_9_x86_64.whl
    865bbc90494b6e9e845ac1eb08ba0377  numpy-1.24.0rc2-cp311-cp311-macosx_11_0_arm64.whl
    faa4f8e5050cb7c4319d2c2df23eca05  numpy-1.24.0rc2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    509fbe04ec7941baaedc6502d003b864  numpy-1.24.0rc2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    2eb1e8cd4c53ee4046fb0cd858daef80  numpy-1.24.0rc2-cp311-cp311-win32.whl
    f5bd22dee1273898598f373b72e40f84  numpy-1.24.0rc2-cp311-cp311-win_amd64.whl
    6a7b14b0fcbb33a8a415e27afc856544  numpy-1.24.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
    8a26467d235710d2db2bc68ef639318f  numpy-1.24.0rc2-cp38-cp38-macosx_11_0_arm64.whl
    e6f08e32041c4e3ca64b8714f2c1f1c8  numpy-1.24.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7112b8e3f9a46953b0a1e9a670008ed4  numpy-1.24.0rc2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    9a7155f0a4a39e17bd70c17331c7e765  numpy-1.24.0rc2-cp38-cp38-win32.whl
    cb10d074bf1977d2257209f96465e639  numpy-1.24.0rc2-cp38-cp38-win_amd64.whl
    0fa5a0f9dfbb817061bd3b438a0e0b19  numpy-1.24.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
    39bd8e522bf703f0be585a7b30861fd0  numpy-1.24.0rc2-cp39-cp39-macosx_11_0_arm64.whl
    a8907c987c7b5f66891cf294dbba4347  numpy-1.24.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7a5f46715e8b93c7b86f275c7ae3f160  numpy-1.24.0rc2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    04daa21b43702b1bf5431731d16a59d6  numpy-1.24.0rc2-cp39-cp39-win32.whl
    046ebc9bb672392443280192e8c71a6d  numpy-1.24.0rc2-cp39-cp39-win_amd64.whl
    e44b5d937de603499ccf29d96e308cd7  numpy-1.24.0rc2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    6a0c0372e7d4db195dd8e889d70de00b  numpy-1.24.0rc2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    946e249ee0dab46c57b5b913ccfe80cd  numpy-1.24.0rc2-pp38-pypy38_pp73-win_amd64.whl
    0974533ba76def71daa78cd0df753e1e  numpy-1.24.0rc2.tar.gz
    

    SHA256

    dce26877ad77c9722e35c9ca82e9272cb6d10aa0a4f95e633b13511dcf549b5f  numpy-1.24.0rc2-cp310-cp310-macosx_10_9_x86_64.whl
    0983fb5b475406cd6aa2f4f364768fb388e1211fd94fb496ad49e214d5c79792  numpy-1.24.0rc2-cp310-cp310-macosx_11_0_arm64.whl
    df9a9c28ad95c87b4047e1acd45715eb430fb5f6df39556279b3f36ce75c697b  numpy-1.24.0rc2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    bdd44d3133c800792f2beda0e24f86b3ae06a8a31172395c650d13e4c05d1d5b  numpy-1.24.0rc2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ab18e29ad73ce560747de10ebe75f145be3026b7480e76d7a5314c2bef0fc831  numpy-1.24.0rc2-cp310-cp310-win32.whl
    1651a59e5d8dbb09b84254e358aa2fe10431df5a92ddefb1ac20208c75bd2fa2  numpy-1.24.0rc2-cp310-cp310-win_amd64.whl
    146d7e5ee04433ce8eb504d0dcffff524a5ba759bd1fb9c73189c3436b04d59c  numpy-1.24.0rc2-cp311-cp311-macosx_10_9_x86_64.whl
    a68647adc9945eac88f4fce96195177c2a81577baa448c1c1bbd5751c550e8b5  numpy-1.24.0rc2-cp311-cp311-macosx_11_0_arm64.whl
    50346a0d81444f420518c7d6996524d7e559cdfa2e41886381442f012593590e  numpy-1.24.0rc2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8bc069b085289f3b7a578519504962330fab91459a847195b914f69b9170b75c  numpy-1.24.0rc2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    07c0f3b174970054c613c33e90627fbafbc5d9115adf8829658b833278e7017c  numpy-1.24.0rc2-cp311-cp311-win32.whl
    1d6198ee7eb45e5d9cc8a5c9102b734f0c5683c0e440ae7cfad90ad8cb9316d2  numpy-1.24.0rc2-cp311-cp311-win_amd64.whl
    e948367a0b9aa68a081c4cf817751c6d0d589a37ce6bb40fea39a882b4858834  numpy-1.24.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
    e4909946cf43ff713f95780d483793d8fb23c1559686a8221e91f89e5ecceea0  numpy-1.24.0rc2-cp38-cp38-macosx_11_0_arm64.whl
    0704c94f89bf8d5d4f5722b305a29cbb1ad91c7f3dcdcda61cb80d6e5443365b  numpy-1.24.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    748285bca9fb0f06a16034d4b9c6dce77997d2ccddf769aaeb4760fea4752ea2  numpy-1.24.0rc2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b6e807f59c1f71e74603a2a88b0b997d7f43e002f6e5f7f55649c6e07738f1ad  numpy-1.24.0rc2-cp38-cp38-win32.whl
    0a5c85f625751b77a6f613db2de5f62514024a7ea6d3be534421746e094b2121  numpy-1.24.0rc2-cp38-cp38-win_amd64.whl
    5db5f7a8f150614684c34449010c15b61df8d8e5fc0cd79ce30e82f493598599  numpy-1.24.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
    6f34b8f2996ebad781cd878276e03d247f0129640fb0ae76bb16addc4df822d1  numpy-1.24.0rc2-cp39-cp39-macosx_11_0_arm64.whl
    e30689dd418f2db3d2d3039cb08011047d27708fdc24c592d56fa58aaeb01672  numpy-1.24.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    925d39290878d680eb8dd690f969faa0a4956b7bd77daf3573486eb39d8e5724  numpy-1.24.0rc2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a2495e48db12f546e4e3f9ea1f665390828098344bf63bca50309a68d713d302  numpy-1.24.0rc2-cp39-cp39-win32.whl
    ea9ca0989fdd42d3320a94f540f317fb615be9ceab75a07078a84b9933582da5  numpy-1.24.0rc2-cp39-cp39-win_amd64.whl
    c9ff51e627e7584eb7ee09f6fe494862e45f796e53b5ee7267d3d5633a79dac6  numpy-1.24.0rc2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    b4eca15593bec5ef3e2e05c157ff1be3990d04a862f49fd46b4e527ff390b778  numpy-1.24.0rc2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b45bdcde72ce02a92ae183ef211bcf7f04e15d5e3df6714866de66d8ec8cc822  numpy-1.24.0rc2-pp38-pypy38_pp73-win_amd64.whl
    c943c61fa708a6225e199aff755b2c3f5a353a2bbb726e10334a05b8e1fc030b  numpy-1.24.0rc2.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.24.0-changelog.rst(49.45 KB)
    numpy-1.24.0rc2.tar.gz(10.39 MB)
    README.rst(25.86 KB)
  • v1.24.0rc1(Nov 24, 2022)

    NumPy 1.24 Release Notes

    The NumPy 1.24.0 release continues the ongoing work to improve the handling and promotion of dtypes, increase the execution speed, and clarify the documentation. There are also a large number of new and expired deprecations due to changes in promotion and cleanups. This might be called a deprecation release. Highlights are

    • Many new deprecations, check them out.
    • Many expired deprecations,
    • New F2PY features and fixes.
    • New "dtype" and "casting" keywords for stacking functions.

    See below for the details,

    Deprecations

    Deprecate fastCopyAndTranspose and PyArray_CopyAndTranspose

    The numpy.fastCopyAndTranspose function has been deprecated. Use the corresponding copy and transpose methods directly:

    arr.T.copy()
    

    The underlying C function PyArray_CopyAndTranspose has also been deprecated from the NumPy C-API.

    (gh-22313)

    Conversion of out-of-bound Python integers

    Attempting a conversion from a Python integer to a NumPy value will now always check whether the result can be represented by NumPy. This means the following examples will fail in the future and give a DeprecationWarning now:

    np.uint8(-1)
    np.array([3000], dtype=np.int8)
    

    Many of these did succeed before. Such code was mainly useful for unsigned integers with negative values such as np.uint8(-1) giving np.iinfo(np.uint8).max.

    Note that conversion between NumPy integers is unaffected, so that np.array(-1).astype(np.uint8) continues to work and use C integer overflow logic.

    (gh-22393)

    Deprecate msort

    The numpy.msort function is deprecated. Use np.sort(a, axis=0) instead.

    (gh-22456)

    np.str0 and similar are now deprecated

    The scalar type aliases ending in a 0 bit size: np.object0, np.str0, np.bytes0, np.void0, np.int0, np.uint0 as well as np.bool8 are now deprecated and will eventually be removed.

    (gh-22607)

    Expired deprecations

    • The normed keyword argument has been removed from [np.histogram]{.title-ref}, [np.histogram2d]{.title-ref}, and [np.histogramdd]{.title-ref}. Use density instead. If normed was passed by position, density is now used.

      (gh-21645)

    • Ragged array creation will now always raise a ValueError unless dtype=object is passed. This includes very deeply nested sequences.

      (gh-22004)

    • Support for Visual Studio 2015 and earlier has been removed.

    • Support for the Windows Interix POSIX interop layer has been removed.

      (gh-22139)

    • Support for cygwin < 3.3 has been removed.

      (gh-22159)

    • The mini() method of np.ma.MaskedArray has been removed. Use either np.ma.MaskedArray.min() or np.ma.minimum.reduce().

    • The single-argument form of np.ma.minimum and np.ma.maximum has been removed. Use np.ma.minimum.reduce() or np.ma.maximum.reduce() instead.

      (gh-22228)

    • Passing dtype instances other than the canonical (mainly native byte-order) ones to dtype= or signature= in ufuncs will now raise a TypeError. We recommend passing the strings "int8" or scalar types np.int8 since the byte-order, datetime/timedelta unit, etc. are never enforced. (Initially deprecated in NumPy 1.21.)

      (gh-22540)

    • The dtype= argument to comparison ufuncs is now applied correctly. That means that only bool and object are valid values and dtype=object is enforced.

      (gh-22541)

    • The deprecation for the aliases np.object, np.bool, np.float, np.complex, np.str, and np.int is expired (introduces NumPy 1.20). Some of these will now give a FutureWarning in addition to raising an error since they will be mapped to the NumPy scalars in the future.

      (gh-22607)

    Compatibility notes

    array.fill(scalar) may behave slightly different

    numpy.ndarray.fill may in some cases behave slightly different now due to the fact that the logic is aligned with item assignment:

    arr = np.array([1])  # with any dtype/value
    arr.fill(scalar)
    # is now identical to:
    arr[0] = scalar
    

    Previously casting may have produced slightly different answers when using values that could not be represented in the target dtype or when the target had object dtype.

    (gh-20924)

    Subarray to object cast now copies

    Casting a dtype that includes a subarray to an object will now ensure a copy of the subarray. Previously an unsafe view was returned:

    arr = np.ones(3, dtype=[("f", "i", 3)])
    subarray_fields = arr.astype(object)[0]
    subarray = subarray_fields[0]  # "f" field
    
    np.may_share_memory(subarray, arr)
    

    Is now always false. While previously it was true for the specific cast.

    (gh-21925)

    Returned arrays respect uniqueness of dtype kwarg objects

    When the dtype keyword argument is used with :pynp.array(){.interpreted-text role="func"} or :pyasarray(){.interpreted-text role="func"}, the dtype of the returned array now always exactly matches the dtype provided by the caller.

    In some cases this change means that a view rather than the input array is returned. The following is an example for this on 64bit Linux where long and longlong are the same precision but different dtypes:

    >>> arr = np.array([1, 2, 3], dtype="long")
    >>> new_dtype = np.dtype("longlong")
    >>> new = np.asarray(arr, dtype=new_dtype)
    >>> new.dtype is new_dtype
    True
    >>> new is arr
    False
    

    Before the change, the dtype did not match because new is arr was True.

    (gh-21995)

    DLPack export raises BufferError

    When an array buffer cannot be exported via DLPack a BufferError is now always raised where previously TypeError or RuntimeError was raised. This allows falling back to the buffer protocol or __array_interface__ when DLPack was tried first.

    (gh-22542)

    NumPy builds are no longer tested on GCC-6

    Ubuntu 18.04 is deprecated for GitHub actions and GCC-6 is not available on Ubuntu 20.04, so builds using that compiler are no longer tested. We still test builds using GCC-7 and GCC-8.

    (gh-22598)

    New Features

    New attribute symbol added to polynomial classes

    The polynomial classes in the numpy.polynomial package have a new symbol attribute which is used to represent the indeterminate of the polynomial. This can be used to change the value of the variable when printing:

    >>> P_y = np.polynomial.Polynomial([1, 0, -1], symbol="y")
    >>> print(P_y)
    1.0 + 0.0·y¹ - 1.0·y²
    

    Note that the polynomial classes only support 1D polynomials, so operations that involve polynomials with different symbols are disallowed when the result would be multivariate:

    >>> P = np.polynomial.Polynomial([1, -1])  # default symbol is "x"
    >>> P_z = np.polynomial.Polynomial([1, 1], symbol="z")
    >>> P * P_z
    Traceback (most recent call last)
       ...
    ValueError: Polynomial symbols differ
    

    The symbol can be any valid Python identifier. The default is symbol=x, consistent with existing behavior.

    (gh-16154)

    F2PY support for Fortran character strings

    F2PY now supports wrapping Fortran functions with:

    • character (e.g. character x)
    • character array (e.g. character, dimension(n) :: x)
    • character string (e.g. character(len=10) x)
    • and character string array (e.g. character(len=10), dimension(n, m) :: x)

    arguments, including passing Python unicode strings as Fortran character string arguments.

    (gh-19388)

    New function np.show_runtime

    A new function numpy.show_runtime has been added to display the runtime information of the machine in addition to numpy.show_config which displays the build-related information.

    (gh-21468)

    strict option for testing.assert_array_equal

    The strict option is now available for testing.assert_array_equal. Setting strict=True will disable the broadcasting behaviour for scalars and ensure that input arrays have the same data type.

    (gh-21595)

    New parameter equal_nan added to np.unique

    np.unique was changed in 1.21 to treat all NaN values as equal and return a single NaN. Setting equal_nan=False will restore pre-1.21 behavior to treat NaNs as unique. Defaults to True.

    (gh-21623)

    casting and dtype keyword arguments for numpy.stack

    The casting and dtype keyword arguments are now available for numpy.stack. To use them, write np.stack(..., dtype=None, casting='same_kind').

    casting and dtype keyword arguments for numpy.vstack

    The casting and dtype keyword arguments are now available for numpy.vstack. To use them, write np.vstack(..., dtype=None, casting='same_kind').

    casting and dtype keyword arguments for numpy.hstack

    The casting and dtype keyword arguments are now available for numpy.hstack. To use them, write np.hstack(..., dtype=None, casting='same_kind').

    (gh-21627)

    The bit generator underlying the singleton RandomState can be changed

    The singleton RandomState instance exposed in the numpy.random module is initialized at startup with the MT19937 bit generator. The new function set_bit_generator allows the default bit generator to be replaced with a user-provided bit generator. This function has been introduced to provide a method allowing seamless integration of a high-quality, modern bit generator in new code with existing code that makes use of the singleton-provided random variate generating functions. The companion function get_bit_generator returns the current bit generator being used by the singleton RandomState. This is provided to simplify restoring the original source of randomness if required.

    The preferred method to generate reproducible random numbers is to use a modern bit generator in an instance of Generator. The function default_rng simplifies instantiation:

    >>> rg = np.random.default_rng(3728973198)
    >>> rg.random()
    

    The same bit generator can then be shared with the singleton instance so that calling functions in the random module will use the same bit generator:

    >>> orig_bit_gen = np.random.get_bit_generator()
    >>> np.random.set_bit_generator(rg.bit_generator)
    >>> np.random.normal()
    

    The swap is permanent (until reversed) and so any call to functions in the random module will use the new bit generator. The original can be restored if required for code to run correctly:

    >>> np.random.set_bit_generator(orig_bit_gen)
    

    (gh-21976)

    np.void now has a dtype argument

    NumPy now allows constructing structured void scalars directly by passing the dtype argument to np.void.

    (gh-22316)

    Improvements

    F2PY Improvements

    • The generated extension modules don't use the deprecated NumPy-C API anymore
    • Improved f2py generated exception messages
    • Numerous bug and flake8 warning fixes
    • various CPP macros that one can use within C-expressions of signature files are prefixed with f2py_. For example, one should use f2py_len(x) instead of len(x)
    • A new construct character(f2py_len=...) is introduced to support returning assumed length character strings (e.g. character(len=*)) from wrapper functions

    A hook to support rewriting f2py internal data structures after reading all its input files is introduced. This is required, for instance, for BC of SciPy support where character arguments are treated as character strings arguments in C expressions.

    (gh-19388)

    IBM zSystems Vector Extension Facility (SIMD)

    Added support for SIMD extensions of zSystem (z13, z14, z15), through the universal intrinsics interface. This support leads to performance improvements for all SIMD kernels implemented using the universal intrinsics, including the following operations: rint, floor, trunc, ceil, sqrt, absolute, square, reciprocal, tanh, sin, cos, equal, not_equal, greater, greater_equal, less, less_equal, maximum, minimum, fmax, fmin, argmax, argmin, add, subtract, multiply, divide.

    (gh-20913)

    NumPy now gives floating point errors in casts

    In most cases, NumPy previously did not give floating point warnings or errors when these happened during casts. For examples, casts like:

    np.array([2e300]).astype(np.float32)  # overflow for float32
    np.array([np.inf]).astype(np.int64)
    

    Should now generally give floating point warnings. These warnings should warn that floating point overflow occurred. For errors when converting floating point values to integers users should expect invalid value warnings.

    Users can modify the behavior of these warnings using np.errstate.

    Note that for float to int casts, the exact warnings that are given may be platform dependent. For example:

    arr = np.full(100, value=1000, dtype=np.float64)
    arr.astype(np.int8)
    

    May give a result equivalent to (the intermediate cast means no warning is given):

    arr.astype(np.int64).astype(np.int8)
    

    May return an undefined result, with a warning set:

    RuntimeWarning: invalid value encountered in cast
    

    The precise behavior is subject to the C99 standard and its implementation in both software and hardware.

    (gh-21437)

    F2PY supports the value attribute

    The Fortran standard requires that variables declared with the value attribute must be passed by value instead of reference. F2PY now supports this use pattern correctly. So integer, intent(in), value :: x in Fortran codes will have correct wrappers generated.

    (gh-21807)

    Added pickle support for third-party BitGenerators

    The pickle format for bit generators was extended to allow each bit generator to supply its own constructor when during pickling. Previous versions of NumPy only supported unpickling Generator instances created with one of the core set of bit generators supplied with NumPy. Attempting to unpickle a Generator that used a third-party bit generators would fail since the constructor used during the unpickling was only aware of the bit generators included in NumPy.

    (gh-22014)

    arange() now explicitly fails with dtype=str

    Previously, the np.arange(n, dtype=str) function worked for n=1 and n=2, but would raise a non-specific exception message for other values of n. Now, it raises a [TypeError]{.title-ref} informing that arange does not support string dtypes:

    >>> np.arange(2, dtype=str)
    Traceback (most recent call last)
       ...
    TypeError: arange() not supported for inputs with DType <class 'numpy.dtype[str_]'>.
    

    (gh-22055)

    numpy.typing protocols are now runtime checkable

    The protocols used in numpy.typing.ArrayLike and numpy.typing.DTypeLike are now properly marked as runtime checkable, making them easier to use for runtime type checkers.

    (gh-22357)

    Performance improvements and changes

    Faster version of np.isin and np.in1d for integer arrays

    np.in1d (used by np.isin) can now switch to a faster algorithm (up to >10x faster) when it is passed two integer arrays. This is often automatically used, but you can use kind="sort" or kind="table" to force the old or new method, respectively.

    (gh-12065)

    Faster comparison operators

    The comparison functions (numpy.equal, numpy.not_equal, numpy.less, numpy.less_equal, numpy.greater and numpy.greater_equal) are now much faster as they are now vectorized with universal intrinsics. For a CPU with SIMD extension AVX512BW, the performance gain is up to 2.57x, 1.65x and 19.15x for integer, float and boolean data types, respectively (with N=50000).

    (gh-21483)

    Changes

    Better reporting of integer division overflow

    Integer division overflow of scalars and arrays used to provide a RuntimeWarning and the return value was undefined leading to crashes at rare occasions:

    >>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
    <stdin>:1: RuntimeWarning: divide by zero encountered in floor_divide
    array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32)
    

    Integer division overflow now returns the input dtype's minimum value and raise the following RuntimeWarning:

    >>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
    <stdin>:1: RuntimeWarning: overflow encountered in floor_divide
    array([-2147483648, -2147483648, -2147483648, -2147483648, -2147483648,
           -2147483648, -2147483648, -2147483648, -2147483648, -2147483648],
          dtype=int32)
    

    (gh-21506)

    masked_invalid now modifies the mask in-place

    When used with copy=False, numpy.ma.masked_invalid now modifies the input masked array in-place. This makes it behave identically to masked_where and better matches the documentation.

    (gh-22046)

    nditer/NpyIter allows all allocating all operands

    The NumPy iterator available through np.nditer in Python and as NpyIter in C now supports allocating all arrays. The iterator shape defaults to () in this case. The operands dtype must be provided, since a "common dtype" cannot be inferred from the other inputs.

    (gh-22457)

    Checksums

    MD5

    1f08c901040ebe1324d16cfc71fe3cd2  numpy-1.24.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
    d35a59a1ccf1542d690860ad85fbb0f0  numpy-1.24.0rc1-cp310-cp310-macosx_11_0_arm64.whl
    c7db37964986d7b9756fd1aa077b7e72  numpy-1.24.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    72c2dad61fc86c4d87e23d0de975e0b6  numpy-1.24.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    3c769f1089253266d7a522144696bde3  numpy-1.24.0rc1-cp310-cp310-win32.whl
    96226a2045063b9caff40fe2a2098e72  numpy-1.24.0rc1-cp310-cp310-win_amd64.whl
    b20897446f52e7fcde80e12c7cc1dc1e  numpy-1.24.0rc1-cp311-cp311-macosx_10_9_x86_64.whl
    9cafe21759e90c705533d1f3201d35aa  numpy-1.24.0rc1-cp311-cp311-macosx_11_0_arm64.whl
    0e8621d07dae7ffaba6cfe83f7288042  numpy-1.24.0rc1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    0c67808eed6ba6f9e9074e6f11951f09  numpy-1.24.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    1065bea5d0670360353e698093954e35  numpy-1.24.0rc1-cp311-cp311-win32.whl
    fe2122ec86b45e00b648071ee2931fbc  numpy-1.24.0rc1-cp311-cp311-win_amd64.whl
    ab3e8424a04338d43ed466ade66de7a8  numpy-1.24.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
    fc6eac08a59c4efb3962d990ff94f2b7  numpy-1.24.0rc1-cp38-cp38-macosx_11_0_arm64.whl
    3498ac93ae6abba813e5d76f86ae5356  numpy-1.24.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    629ce4b8cb011ff735ebd482fbf51702  numpy-1.24.0rc1-cp38-cp38-win32.whl
    cb503a78e27f0f46b6b43d211275dc58  numpy-1.24.0rc1-cp38-cp38-win_amd64.whl
    ffccdb9750336f5e55ab90c8eb7c1a8d  numpy-1.24.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
    9751b9f833238a7309ad4e6b43fa8cb5  numpy-1.24.0rc1-cp39-cp39-macosx_11_0_arm64.whl
    cb8a10f411773f0ac5e06df067599d45  numpy-1.24.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8d670816134824972afb512498b95ede  numpy-1.24.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    60687b97ab720f6be9e3542e5761769f  numpy-1.24.0rc1-cp39-cp39-win32.whl
    11fd99748acc0726ac164034c32bb3cd  numpy-1.24.0rc1-cp39-cp39-win_amd64.whl
    09e1d6f6d75facaf84d2b87a33874d4b  numpy-1.24.0rc1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    2da9ad07343b410aca4edf1285e4266b  numpy-1.24.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    9a0e466a55632cc1d67db119f586cd05  numpy-1.24.0rc1-pp38-pypy38_pp73-win_amd64.whl
    abc863895b02cdcc436474f6cdf2d14d  numpy-1.24.0rc1.tar.gz
    

    SHA256

    36acf6043b94a0e8af75d0a1931678d20e673b83fd79798c805ebc995e233cff  numpy-1.24.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
    244c2c22f776e168e1060112f87717d73df2462e0eba4095a7673fe87db49b7a  numpy-1.24.0rc1-cp310-cp310-macosx_11_0_arm64.whl
    730112e692c165e8ad69071c70653522ee19d8c8af2da839339de01013eeef24  numpy-1.24.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    960b0d980adfa5c37fea89fc556bb482f9d957a3188be46d03a00fa1bd8f617b  numpy-1.24.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f54788f1a6941cb1b57bcf5ff09a281e5db75bbf9f2ac9534a626128ded0244f  numpy-1.24.0rc1-cp310-cp310-win32.whl
    07fef63a5113969d7897589928870c57dd3e28671d617f688486f12c3a3b466a  numpy-1.24.0rc1-cp310-cp310-win_amd64.whl
    aea88e02d9335052172f4d6c8163721c3edd086ea3bf3bc9b6d5c55661540f1b  numpy-1.24.0rc1-cp311-cp311-macosx_10_9_x86_64.whl
    3950be11c03d250ea780280ce37a6fe7bd21dafcb478e08190c72b6c58ed7d18  numpy-1.24.0rc1-cp311-cp311-macosx_11_0_arm64.whl
    743c30cda228f8be9fe552453870b412b38ac232972c617a0f18765dedf395a5  numpy-1.24.0rc1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    cab1335b70e24e88ef2b9f727b9f5fc6e0d31d9fe9da0213f6c28cf615b65db0  numpy-1.24.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    5283759f0dd905f9e62ed55775345fbb233a53146ceaf2f75e96d939f564ee79  numpy-1.24.0rc1-cp311-cp311-win32.whl
    427bd9c45777e8baf782b6b33ebc26a88716c2d9b76b0474987660c2c066dca0  numpy-1.24.0rc1-cp311-cp311-win_amd64.whl
    20edfad312395d1cb8ad6ca5d2c42d2dab057f5d1920af3f94c7a72103335d8a  numpy-1.24.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
    79134b92e1fb86915369753b3e64a359416cd98ea2329d270eb4e1d0ab300c0d  numpy-1.24.0rc1-cp38-cp38-macosx_11_0_arm64.whl
    6f00858573e2316ac5d190cf81dc178d94579969f827ac34c7a53110428e6f72  numpy-1.24.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a8d6f78be3ad0bd9b4adecba2fda570ef491ae69f8c7cc84acd382802a81e242  numpy-1.24.0rc1-cp38-cp38-win32.whl
    f1f5fa912df64dd48ec55352b72f4b036ab7b3911e996703f436e17baca780f9  numpy-1.24.0rc1-cp38-cp38-win_amd64.whl
    8d149b3c3062dc68e29bdb244edc30c5d80e2c654b5c27c32773bf7354452b48  numpy-1.24.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
    d177fbd4d22248640d73f07c3aac2cc1f79c412f61564452abd08606ee5e3713  numpy-1.24.0rc1-cp39-cp39-macosx_11_0_arm64.whl
    05faa4ecb98d7bc593afc5b10c25f0e7dd65244b653756b083c605fbf60b9b67  numpy-1.24.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    06d8827c6fa511b61047376efc3a677d447193bf88e6bbde35b4e5223a4b58d6  numpy-1.24.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    15605b92bf10b10e110a9c0f1c4ef6cd58246532c62a0c3d3188c05e69cdcdb6  numpy-1.24.0rc1-cp39-cp39-win32.whl
    8046f5c23769791be8432a592b9881984e0e4abc7f552c7e5c349420a27323e7  numpy-1.24.0rc1-cp39-cp39-win_amd64.whl
    aa9c4a2f65d669e6559123154da944ad6bd7605cbba5cce81bf6794617870510  numpy-1.24.0rc1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    e44fd1bdfa50979ddec76318e21abc82ee3858e5f45dfc5153b6f660d9d29851  numpy-1.24.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    1802199d70d9f8ac11eb63a1ef50d33915b78a84bacacaadb2896175005103d4  numpy-1.24.0rc1-pp38-pypy38_pp73-win_amd64.whl
    d601180710004799acb8f80e564b84e71490fac9d84e115e2f5b0f6709754f16  numpy-1.24.0rc1.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.24.0-changelog.rst(48.31 KB)
    numpy-1.24.0rc1.tar.gz(10.38 MB)
    README.rst(25.61 KB)
  • v1.23.5(Nov 20, 2022)

    NumPy 1.23.5 Release Notes

    NumPy 1.23.5 is a maintenance release that fixes bugs discovered after the 1.23.4 release and keeps the build infrastructure current. The Python versions supported for this release are 3.8-3.11.

    Contributors

    A total of 7 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • @DWesl
    • Aayush Agrawal +
    • Adam Knapp +
    • Charles Harris
    • Navpreet Singh +
    • Sebastian Berg
    • Tania Allard

    Pull requests merged

    A total of 10 pull requests were merged for this release.

    • #22489: TST, MAINT: Replace most setup with setup_method (also teardown)
    • #22490: MAINT, CI: Switch to cygwin/[email protected]
    • #22494: TST: Make test_partial_iteration_cleanup robust but require leak...
    • #22592: MAINT: Ensure graceful handling of large header sizes
    • #22593: TYP: Spelling alignment for array flag literal
    • #22594: BUG: Fix bounds checking for random.logseries
    • #22595: DEV: Update GH actions and Dockerfile for Gitpod
    • #22596: CI: Only fetch in actions/checkout
    • #22597: BUG: Decrement ref count in gentype_reduce if allocated memory...
    • #22625: BUG: Histogramdd breaks on big arrays in Windows

    Checksums

    MD5

    8a412b79d975199cefadb465279fd569  numpy-1.23.5-cp310-cp310-macosx_10_9_x86_64.whl
    1b56e8e6a0516c78473657abf0710538  numpy-1.23.5-cp310-cp310-macosx_11_0_arm64.whl
    c787f4763c9a5876e86a17f1651ba458  numpy-1.23.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    db07645022e56747ba3f00c2d742232e  numpy-1.23.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    c63a6fb7cc16a13aabc82ec57ac6bb4d  numpy-1.23.5-cp310-cp310-win32.whl
    3fea9247e1d812600015641941fa273f  numpy-1.23.5-cp310-cp310-win_amd64.whl
    4222cfb36e5ac9aec348c81b075e2c05  numpy-1.23.5-cp311-cp311-macosx_10_9_x86_64.whl
    6c7102f185b310ac70a62c13d46f04e6  numpy-1.23.5-cp311-cp311-macosx_11_0_arm64.whl
    6b7319f66bf7ac01b49e2a32470baf28  numpy-1.23.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    3c60928ddb1f55163801f06ac2229eb0  numpy-1.23.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    6936b6bcfd6474acc7a8c162a9393b3c  numpy-1.23.5-cp311-cp311-win32.whl
    6c9af68b7b56c12c913678cafbdc44d6  numpy-1.23.5-cp311-cp311-win_amd64.whl
    699daeac883260d3f182ae4bbbd9bbd2  numpy-1.23.5-cp38-cp38-macosx_10_9_x86_64.whl
    6c233a36339de0652139e78ef91504d4  numpy-1.23.5-cp38-cp38-macosx_11_0_arm64.whl
    57d5439556ab5078c91bdeffd9c0036e  numpy-1.23.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a8045b59187f2e0ccd4294851adbbb8a  numpy-1.23.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    7f38f7e560e4bf41490372ab84aa7a38  numpy-1.23.5-cp38-cp38-win32.whl
    76095726ba459d7f761b44acf2e56bd1  numpy-1.23.5-cp38-cp38-win_amd64.whl
    174befd584bc1b03ed87c8f0d149a58e  numpy-1.23.5-cp39-cp39-macosx_10_9_x86_64.whl
    9cbac793d77278f5d27a7979b64f6b5b  numpy-1.23.5-cp39-cp39-macosx_11_0_arm64.whl
    6e417b087044e90562183b33f3049b09  numpy-1.23.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    54fa63341eaa6da346d824399e8237f6  numpy-1.23.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    cc14d62a158e99c57f925c86551e45f0  numpy-1.23.5-cp39-cp39-win32.whl
    bad36b81e7e84bd7a028affa0659d235  numpy-1.23.5-cp39-cp39-win_amd64.whl
    b4d17d6b79a8354a2834047669651963  numpy-1.23.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    89f6dc4a4ff63fca6af1223111cd888d  numpy-1.23.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    633d574a35b8592bab502ef569b0731e  numpy-1.23.5-pp38-pypy38_pp73-win_amd64.whl
    8b2692a511a3795f3af8af2cd7566a15  numpy-1.23.5.tar.gz
    

    SHA256

    9c88793f78fca17da0145455f0d7826bcb9f37da4764af27ac945488116efe63  numpy-1.23.5-cp310-cp310-macosx_10_9_x86_64.whl
    e9f4c4e51567b616be64e05d517c79a8a22f3606499941d97bb76f2ca59f982d  numpy-1.23.5-cp310-cp310-macosx_11_0_arm64.whl
    7903ba8ab592b82014713c491f6c5d3a1cde5b4a3bf116404e08f5b52f6daf43  numpy-1.23.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    5e05b1c973a9f858c74367553e236f287e749465f773328c8ef31abe18f691e1  numpy-1.23.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    522e26bbf6377e4d76403826ed689c295b0b238f46c28a7251ab94716da0b280  numpy-1.23.5-cp310-cp310-win32.whl
    dbee87b469018961d1ad79b1a5d50c0ae850000b639bcb1b694e9981083243b6  numpy-1.23.5-cp310-cp310-win_amd64.whl
    ce571367b6dfe60af04e04a1834ca2dc5f46004ac1cc756fb95319f64c095a96  numpy-1.23.5-cp311-cp311-macosx_10_9_x86_64.whl
    56e454c7833e94ec9769fa0f86e6ff8e42ee38ce0ce1fa4cbb747ea7e06d56aa  numpy-1.23.5-cp311-cp311-macosx_11_0_arm64.whl
    5039f55555e1eab31124a5768898c9e22c25a65c1e0037f4d7c495a45778c9f2  numpy-1.23.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    58f545efd1108e647604a1b5aa809591ccd2540f468a880bedb97247e72db387  numpy-1.23.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b2a9ab7c279c91974f756c84c365a669a887efa287365a8e2c418f8b3ba73fb0  numpy-1.23.5-cp311-cp311-win32.whl
    0cbe9848fad08baf71de1a39e12d1b6310f1d5b2d0ea4de051058e6e1076852d  numpy-1.23.5-cp311-cp311-win_amd64.whl
    f063b69b090c9d918f9df0a12116029e274daf0181df392839661c4c7ec9018a  numpy-1.23.5-cp38-cp38-macosx_10_9_x86_64.whl
    0aaee12d8883552fadfc41e96b4c82ee7d794949e2a7c3b3a7201e968c7ecab9  numpy-1.23.5-cp38-cp38-macosx_11_0_arm64.whl
    92c8c1e89a1f5028a4c6d9e3ccbe311b6ba53694811269b992c0b224269e2398  numpy-1.23.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    d208a0f8729f3fb790ed18a003f3a57895b989b40ea4dce4717e9cf4af62c6bb  numpy-1.23.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    06005a2ef6014e9956c09ba07654f9837d9e26696a0470e42beedadb78c11b07  numpy-1.23.5-cp38-cp38-win32.whl
    ca51fcfcc5f9354c45f400059e88bc09215fb71a48d3768fb80e357f3b457e1e  numpy-1.23.5-cp38-cp38-win_amd64.whl
    8969bfd28e85c81f3f94eb4a66bc2cf1dbdc5c18efc320af34bffc54d6b1e38f  numpy-1.23.5-cp39-cp39-macosx_10_9_x86_64.whl
    a7ac231a08bb37f852849bbb387a20a57574a97cfc7b6cabb488a4fc8be176de  numpy-1.23.5-cp39-cp39-macosx_11_0_arm64.whl
    bf837dc63ba5c06dc8797c398db1e223a466c7ece27a1f7b5232ba3466aafe3d  numpy-1.23.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    33161613d2269025873025b33e879825ec7b1d831317e68f4f2f0f84ed14c719  numpy-1.23.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    af1da88f6bc3d2338ebbf0e22fe487821ea4d8e89053e25fa59d1d79786e7481  numpy-1.23.5-cp39-cp39-win32.whl
    09b7847f7e83ca37c6e627682f145856de331049013853f344f37b0c9690e3df  numpy-1.23.5-cp39-cp39-win_amd64.whl
    abdde9f795cf292fb9651ed48185503a2ff29be87770c3b8e2a14b0cd7aa16f8  numpy-1.23.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    f9a909a8bae284d46bbfdefbdd4a262ba19d3bc9921b1e76126b1d21c3c34135  numpy-1.23.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    01dd17cbb340bf0fc23981e52e1d18a9d4050792e8fb8363cecbf066a84b827d  numpy-1.23.5-pp38-pypy38_pp73-win_amd64.whl
    1b1766d6f397c18153d40015ddfc79ddb715cabadc04d2d228d4e5a8bc4ded1a  numpy-1.23.5.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.23.5-changelog.rst(1.44 KB)
    numpy-1.23.5.tar.gz(10.23 MB)
    README.rst(7.54 KB)
  • v1.23.4(Oct 12, 2022)

    NumPy 1.23.4 Release Notes

    NumPy 1.23.4 is a maintenance release that fixes bugs discovered after the 1.23.3 release and keeps the build infrastructure current. The main improvements are fixes for some annotation corner cases, a fix for a long time nested_iters memory leak, and a fix of complex vector dot for very large arrays. The Python versions supported for this release are 3.8-3.11.

    Note that the mypy version needs to be 0.981+ if you test using Python 3.10.7, otherwise the typing tests will fail.

    Contributors

    A total of 8 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Bas van Beek
    • Charles Harris
    • Matthew Barber
    • Matti Picus
    • Ralf Gommers
    • Ross Barnowski
    • Sebastian Berg
    • Sicheng Zeng +

    Pull requests merged

    A total of 13 pull requests were merged for this release.

    • #22368: BUG: Add __array_api_version__ to numpy.array_api namespace
    • #22370: MAINT: update sde toolkit to 9.0, fix download link
    • #22382: BLD: use macos-11 image on azure, macos-1015 is deprecated
    • #22383: MAINT: random: remove get_info from "extending with Cython"...
    • #22384: BUG: Fix complex vector dot with more than NPY_CBLAS_CHUNK elements
    • #22387: REV: Loosen lookfor's import try/except again
    • #22388: TYP,ENH: Mark numpy.typing protocols as runtime checkable
    • #22389: TYP,MAINT: Change more overloads to play nice with pyright
    • #22390: TST,TYP: Bump mypy to 0.981
    • #22391: DOC: Update delimiter param description.
    • #22392: BUG: Memory leaks in numpy.nested_iters
    • #22413: REL: Prepare for the NumPy 1.23.4 release.
    • #22424: TST: Fix failing aarch64 wheel builds.

    Checksums

    MD5

    90a3d95982490cfeeef22c0f7cbd874f  numpy-1.23.4-cp310-cp310-macosx_10_9_x86_64.whl
    c3cae63394db6c82fd2cb5700fc5917d  numpy-1.23.4-cp310-cp310-macosx_11_0_arm64.whl
    b3ff0878de205f56c38fd7dcab80081f  numpy-1.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    e2b086ca2229209f2f996c2f9a38bf9c  numpy-1.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    44cc8bb112ca737520cf986fff92dfb0  numpy-1.23.4-cp310-cp310-win32.whl
    21c8e5fdfba2ff953e446189379cf0c9  numpy-1.23.4-cp310-cp310-win_amd64.whl
    27445a9c85977cb8efa682a4b993347f  numpy-1.23.4-cp311-cp311-macosx_10_9_x86_64.whl
    11ef4b7dfdaa37604cb881f3ca4459db  numpy-1.23.4-cp311-cp311-macosx_11_0_arm64.whl
    b3c77344274f91514f728a454fd471fa  numpy-1.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    43aef7f984cd63d95c11fb74dd59ef0b  numpy-1.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    637fe21b585228c9670d6e002bf8047f  numpy-1.23.4-cp311-cp311-win32.whl
    f529edf9b849d6e3b8cdb5120ae5b81a  numpy-1.23.4-cp311-cp311-win_amd64.whl
    76c61ce36317a7e509663829c6844fd9  numpy-1.23.4-cp38-cp38-macosx_10_9_x86_64.whl
    2133f6893eef41cd9331c7d0271044c4  numpy-1.23.4-cp38-cp38-macosx_11_0_arm64.whl
    5ccb3aa6fb8cb9e20ec336e315d01dec  numpy-1.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    da71f34a4df0b98e4d9e17906dd57b07  numpy-1.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a318978f51fb80a17c2381e39194e906  numpy-1.23.4-cp38-cp38-win32.whl
    eac810d6bc43830bf151ea55cd0ded93  numpy-1.23.4-cp38-cp38-win_amd64.whl
    4cf0a6007abe42564c7380dbf92a26ce  numpy-1.23.4-cp39-cp39-macosx_10_9_x86_64.whl
    2e005bedf129ce8bafa6f550537f3740  numpy-1.23.4-cp39-cp39-macosx_11_0_arm64.whl
    10aa210311fcd19a03f6c5495824a306  numpy-1.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    6301298a67999657a0878b64eeed09f2  numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    76144e575a3c3863ea22e03cdf022d8a  numpy-1.23.4-cp39-cp39-win32.whl
    8291dd66ef5451b4db2da55c21535757  numpy-1.23.4-cp39-cp39-win_amd64.whl
    7cc095b18690071828b5b620d5ec40e7  numpy-1.23.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    63742f15e8bfa215c893136bbfc6444f  numpy-1.23.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    4ed382e55abc09c89a34db047692f6a6  numpy-1.23.4-pp38-pypy38_pp73-win_amd64.whl
    d9ffd2c189633486ec246e61d4b947a0  numpy-1.23.4.tar.gz
    

    SHA256

    95d79ada05005f6f4f337d3bb9de8a7774f259341c70bc88047a1f7b96a4bcb2  numpy-1.23.4-cp310-cp310-macosx_10_9_x86_64.whl
    926db372bc4ac1edf81cfb6c59e2a881606b409ddc0d0920b988174b2e2a767f  numpy-1.23.4-cp310-cp310-macosx_11_0_arm64.whl
    c237129f0e732885c9a6076a537e974160482eab8f10db6292e92154d4c67d71  numpy-1.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a8365b942f9c1a7d0f0dc974747d99dd0a0cdfc5949a33119caf05cb314682d3  numpy-1.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    2341f4ab6dba0834b685cce16dad5f9b6606ea8a00e6da154f5dbded70fdc4dd  numpy-1.23.4-cp310-cp310-win32.whl
    d331afac87c92373826af83d2b2b435f57b17a5c74e6268b79355b970626e329  numpy-1.23.4-cp310-cp310-win_amd64.whl
    488a66cb667359534bc70028d653ba1cf307bae88eab5929cd707c761ff037db  numpy-1.23.4-cp311-cp311-macosx_10_9_x86_64.whl
    ce03305dd694c4873b9429274fd41fc7eb4e0e4dea07e0af97a933b079a5814f  numpy-1.23.4-cp311-cp311-macosx_11_0_arm64.whl
    8981d9b5619569899666170c7c9748920f4a5005bf79c72c07d08c8a035757b0  numpy-1.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7a70a7d3ce4c0e9284e92285cba91a4a3f5214d87ee0e95928f3614a256a1488  numpy-1.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    5e13030f8793e9ee42f9c7d5777465a560eb78fa7e11b1c053427f2ccab90c79  numpy-1.23.4-cp311-cp311-win32.whl
    7607b598217745cc40f751da38ffd03512d33ec06f3523fb0b5f82e09f6f676d  numpy-1.23.4-cp311-cp311-win_amd64.whl
    7ab46e4e7ec63c8a5e6dbf5c1b9e1c92ba23a7ebecc86c336cb7bf3bd2fb10e5  numpy-1.23.4-cp38-cp38-macosx_10_9_x86_64.whl
    a8aae2fb3180940011b4862b2dd3756616841c53db9734b27bb93813cd79fce6  numpy-1.23.4-cp38-cp38-macosx_11_0_arm64.whl
    8c053d7557a8f022ec823196d242464b6955a7e7e5015b719e76003f63f82d0f  numpy-1.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a0882323e0ca4245eb0a3d0a74f88ce581cc33aedcfa396e415e5bba7bf05f68  numpy-1.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    dada341ebb79619fe00a291185bba370c9803b1e1d7051610e01ed809ef3a4ba  numpy-1.23.4-cp38-cp38-win32.whl
    0fe563fc8ed9dc4474cbf70742673fc4391d70f4363f917599a7fa99f042d5a8  numpy-1.23.4-cp38-cp38-win_amd64.whl
    c67b833dbccefe97cdd3f52798d430b9d3430396af7cdb2a0c32954c3ef73894  numpy-1.23.4-cp39-cp39-macosx_10_9_x86_64.whl
    f76025acc8e2114bb664294a07ede0727aa75d63a06d2fae96bf29a81747e4a7  numpy-1.23.4-cp39-cp39-macosx_11_0_arm64.whl
    12ac457b63ec8ded85d85c1e17d85efd3c2b0967ca39560b307a35a6703a4735  numpy-1.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    95de7dc7dc47a312f6feddd3da2500826defdccbc41608d0031276a24181a2c0  numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f2f390aa4da44454db40a1f0201401f9036e8d578a25f01a6e237cea238337ef  numpy-1.23.4-cp39-cp39-win32.whl
    f260da502d7441a45695199b4e7fd8ca87db659ba1c78f2bbf31f934fe76ae0e  numpy-1.23.4-cp39-cp39-win_amd64.whl
    61be02e3bf810b60ab74e81d6d0d36246dbfb644a462458bb53b595791251911  numpy-1.23.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    296d17aed51161dbad3c67ed6d164e51fcd18dbcd5dd4f9d0a9c6055dce30810  numpy-1.23.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    4d52914c88b4930dafb6c48ba5115a96cbab40f45740239d9f4159c4ba779962  numpy-1.23.4-pp38-pypy38_pp73-win_amd64.whl
    ed2cc92af0efad20198638c69bb0fc2870a58dabfba6eb722c933b48556c686c  numpy-1.23.4.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.23.4-changelog.rst(1.77 KB)
    numpy-1.23.4.tar.gz(10.23 MB)
    README.rst(8.14 KB)
  • v1.23.3(Sep 9, 2022)

    NumPy 1.23.3 Release Notes

    NumPy 1.23.3 is a maintenance release that fixes bugs discovered after the 1.23.2 release. There is no major theme for this release, the main improvements are for some downstream builds and some annotation corner cases. The Python versions supported for this release are 3.8-3.11.

    Note that we will move to MacOS 11 for the NumPy 1.23.4 release, the 10.15 version currently used will no longer be supported by our build infrastructure at that point.

    Contributors

    A total of 16 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Aaron Meurer
    • Bas van Beek
    • Charles Harris
    • Ganesh Kathiresan
    • Gavin Zhang +
    • Iantra Solari+
    • Jyn Spring 琴春 +
    • Matti Picus
    • Rafael Cardoso Fernandes Sousa
    • Rafael Sousa +
    • Ralf Gommers
    • Rin Cat (鈴猫) +
    • Saransh Chopra +
    • Sayed Adel
    • Sebastian Berg
    • Serge Guelton

    Pull requests merged

    A total of 14 pull requests were merged for this release.

    • #22136: BLD: Add Python 3.11 wheels to aarch64 build
    • #22148: MAINT: Update setup.py for Python 3.11.
    • #22155: CI: Test NumPy build against old versions of GCC(6, 7, 8)
    • #22156: MAINT: support IBM i system
    • #22195: BUG: Fix circleci build
    • #22214: BUG: Expose heapsort algorithms in a shared header
    • #22215: BUG: Support using libunwind for backtrack
    • #22216: MAINT: fix an incorrect pointer type usage in f2py
    • #22220: BUG: change overloads to play nice with pyright.
    • #22221: TST,BUG: Use fork context to fix MacOS savez test
    • #22222: TYP,BUG: Reduce argument validation in C-based __class_getitem__
    • #22223: TST: ensure np.equal.reduce raises a TypeError
    • #22224: BUG: Fix the implementation of numpy.array_api.vecdot
    • #22230: BUG: Better report integer division overflow (backport)

    Checksums

    MD5

    a60bf0b1d440bf18d87c49409036d05a  numpy-1.23.3-cp310-cp310-macosx_10_9_x86_64.whl
    59b43423a692f5351c6a43b852b210d7  numpy-1.23.3-cp310-cp310-macosx_11_0_arm64.whl
    f482a4be6954b1b606320f0ffc1995dd  numpy-1.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a82e2ecc4060a37dae5424e624eabfe3  numpy-1.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    84916178e5f4d073d0008754cba7f300  numpy-1.23.3-cp310-cp310-win32.whl
    605da65b9b66dfce8b62d847cb3841f7  numpy-1.23.3-cp310-cp310-win_amd64.whl
    57cf29f781be955a9cd0de8d07fbce56  numpy-1.23.3-cp311-cp311-macosx_10_9_x86_64.whl
    f395dcf622dff0ba44777cbae0442189  numpy-1.23.3-cp311-cp311-macosx_11_0_arm64.whl
    55d6a6439913ba84ad89268e0ad59fa0  numpy-1.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    202bc3a8617f479ebe60ca0dec29964b  numpy-1.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a42c3d058bcef47b26841bf9472a89bf  numpy-1.23.3-cp311-cp311-win32.whl
    237dbd94e5529065c0c5cc4e47ceeb7e  numpy-1.23.3-cp311-cp311-win_amd64.whl
    d0587d5b28d3fa7e0ec8fd3df76e4bd4  numpy-1.23.3-cp38-cp38-macosx_10_9_x86_64.whl
    054234695ed3d955fb01f661db2c14fc  numpy-1.23.3-cp38-cp38-macosx_11_0_arm64.whl
    4e75ac61e34f1bf23e7cbd6e2bfc7a32  numpy-1.23.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    29ccb3a732027ee1abe23a9562c32d0c  numpy-1.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    12817838edc1e1bea27df79f3a83da5d  numpy-1.23.3-cp38-cp38-win32.whl
    ef430e830a9fea7d8db0218b901671f6  numpy-1.23.3-cp38-cp38-win_amd64.whl
    b001f7e17df798f9b949bbe259924c77  numpy-1.23.3-cp39-cp39-macosx_10_9_x86_64.whl
    bc1782f5d79187d63d14ed69a6a411e9  numpy-1.23.3-cp39-cp39-macosx_11_0_arm64.whl
    f8fb0178bc34a198d5ce4e166076e1fc  numpy-1.23.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    fb80d38c37aae1e4d416cd4de068ff0a  numpy-1.23.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    318d0a2a27b7e361295c0382a0ff4a94  numpy-1.23.3-cp39-cp39-win32.whl
    880dc73de09fccda0650e9404fa83608  numpy-1.23.3-cp39-cp39-win_amd64.whl
    3b5a51f78718a1a82d2750ec159f9acf  numpy-1.23.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    56a0c90a303979d5bf8fc57e86e57ccb  numpy-1.23.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    5338d997a3178750834e742a257dfa4a  numpy-1.23.3-pp38-pypy38_pp73-win_amd64.whl
    6efc60a3f6c1b74c849d53fbcc07807b  numpy-1.23.3.tar.gz
    

    SHA256

    c9f707b5bb73bf277d812ded9896f9512a43edff72712f31667d0a8c2f8e71ee  numpy-1.23.3-cp310-cp310-macosx_10_9_x86_64.whl
    ffcf105ecdd9396e05a8e58e81faaaf34d3f9875f137c7372450baa5d77c9a54  numpy-1.23.3-cp310-cp310-macosx_11_0_arm64.whl
    0ea3f98a0ffce3f8f57675eb9119f3f4edb81888b6874bc1953f91e0b1d4f440  numpy-1.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    004f0efcb2fe1c0bd6ae1fcfc69cc8b6bf2407e0f18be308612007a0762b4089  numpy-1.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    98dcbc02e39b1658dc4b4508442a560fe3ca5ca0d989f0df062534e5ca3a5c1a  numpy-1.23.3-cp310-cp310-win32.whl
    39a664e3d26ea854211867d20ebcc8023257c1800ae89773cbba9f9e97bae036  numpy-1.23.3-cp310-cp310-win_amd64.whl
    1f27b5322ac4067e67c8f9378b41c746d8feac8bdd0e0ffede5324667b8a075c  numpy-1.23.3-cp311-cp311-macosx_10_9_x86_64.whl
    2ad3ec9a748a8943e6eb4358201f7e1c12ede35f510b1a2221b70af4bb64295c  numpy-1.23.3-cp311-cp311-macosx_11_0_arm64.whl
    bdc9febce3e68b697d931941b263c59e0c74e8f18861f4064c1f712562903411  numpy-1.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    301c00cf5e60e08e04d842fc47df641d4a181e651c7135c50dc2762ffe293dbd  numpy-1.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    7cd1328e5bdf0dee621912f5833648e2daca72e3839ec1d6695e91089625f0b4  numpy-1.23.3-cp311-cp311-win32.whl
    8355fc10fd33a5a70981a5b8a0de51d10af3688d7a9e4a34fcc8fa0d7467bb7f  numpy-1.23.3-cp311-cp311-win_amd64.whl
    bc6e8da415f359b578b00bcfb1d08411c96e9a97f9e6c7adada554a0812a6cc6  numpy-1.23.3-cp38-cp38-macosx_10_9_x86_64.whl
    22d43376ee0acd547f3149b9ec12eec2f0ca4a6ab2f61753c5b29bb3e795ac4d  numpy-1.23.3-cp38-cp38-macosx_11_0_arm64.whl
    a64403f634e5ffdcd85e0b12c08f04b3080d3e840aef118721021f9b48fc1460  numpy-1.23.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    efd9d3abe5774404becdb0748178b48a218f1d8c44e0375475732211ea47c67e  numpy-1.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f8c02ec3c4c4fcb718fdf89a6c6f709b14949408e8cf2a2be5bfa9c49548fd85  numpy-1.23.3-cp38-cp38-win32.whl
    e868b0389c5ccfc092031a861d4e158ea164d8b7fdbb10e3b5689b4fc6498df6  numpy-1.23.3-cp38-cp38-win_amd64.whl
    09f6b7bdffe57fc61d869a22f506049825d707b288039d30f26a0d0d8ea05164  numpy-1.23.3-cp39-cp39-macosx_10_9_x86_64.whl
    8c79d7cf86d049d0c5089231a5bcd31edb03555bd93d81a16870aa98c6cfb79d  numpy-1.23.3-cp39-cp39-macosx_11_0_arm64.whl
    e5d5420053bbb3dd64c30e58f9363d7a9c27444c3648e61460c1237f9ec3fa14  numpy-1.23.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    d5422d6a1ea9b15577a9432e26608c73a78faf0b9039437b075cf322c92e98e7  numpy-1.23.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    c1ba66c48b19cc9c2975c0d354f24058888cdc674bebadceb3cdc9ec403fb5d1  numpy-1.23.3-cp39-cp39-win32.whl
    78a63d2df1d947bd9d1b11d35564c2f9e4b57898aae4626638056ec1a231c40c  numpy-1.23.3-cp39-cp39-win_amd64.whl
    17c0e467ade9bda685d5ac7f5fa729d8d3e76b23195471adae2d6a6941bd2c18  numpy-1.23.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    91b8d6768a75247026e951dce3b2aac79dc7e78622fc148329135ba189813584  numpy-1.23.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    94c15ca4e52671a59219146ff584488907b1f9b3fc232622b47e2cf832e94fb8  numpy-1.23.3-pp38-pypy38_pp73-win_amd64.whl
    51bf49c0cd1d52be0a240aa66f3458afc4b95d8993d2d04f0d91fa60c10af6cd  numpy-1.23.3.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.23.3-changelog.rst(1.98 KB)
    numpy-1.23.3.tar.gz(10.22 MB)
    README.rst(8.32 KB)
  • v1.23.2(Aug 14, 2022)

    NumPy 1.23.2 Release Notes

    NumPy 1.23.2 is a maintenance release that fixes bugs discovered after the 1.23.1 release. Notable features are:

    • Typing changes needed for Python 3.11
    • Wheels for Python 3.11.0rc1

    The Python versions supported for this release are 3.8-3.11.

    Contributors

    A total of 9 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Alexander Grund +
    • Bas van Beek
    • Charles Harris
    • Jon Cusick +
    • Matti Picus
    • Michael Osthege +
    • Pal Barta +
    • Ross Barnowski
    • Sebastian Berg

    Pull requests merged

    A total of 15 pull requests were merged for this release.

    • #22030: ENH: Add __array_ufunc__ typing support to the nin=1 ufuncs
    • #22031: MAINT, TYP: Fix np.angle dtype-overloads
    • #22032: MAINT: Do not let _GenericAlias wrap the underlying classes'...
    • #22033: TYP,MAINT: Allow einsum subscripts to be passed via integer...
    • #22034: MAINT,TYP: Add object-overloads for the np.generic rich comparisons
    • #22035: MAINT,TYP: Allow the squeeze and transpose method to...
    • #22036: BUG: Fix subarray to object cast ownership details
    • #22037: BUG: Use Popen to silently invoke f77 -v
    • #22038: BUG: Avoid errors on NULL during deepcopy
    • #22039: DOC: Add versionchanged for converter callable behavior.
    • #22057: MAINT: Quiet the anaconda uploads.
    • #22078: ENH: reorder includes for testing on top of system installations...
    • #22106: TST: fix test_linear_interpolation_formula_symmetric
    • #22107: BUG: Fix skip condition for test_loss_of_precision[complex256]
    • #22115: BLD: Build python3.11.0rc1 wheels.

    Checksums

    MD5

    fe1e3480ea8c417c8f7b05f543c1448d  numpy-1.23.2-cp310-cp310-macosx_10_9_x86_64.whl
    0ab14b1afd0a55a374ca69b3b39cab3c  numpy-1.23.2-cp310-cp310-macosx_11_0_arm64.whl
    df059e5405bfe75c0ac77b01abbdb237  numpy-1.23.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    4ed412c4c078e96edf11ca3b11eef76b  numpy-1.23.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    0caad53d9a5e3c5e8cd29f19a9f0c014  numpy-1.23.2-cp310-cp310-win32.whl
    01e508b8b4f591daff128da1cfde8e1f  numpy-1.23.2-cp310-cp310-win_amd64.whl
    8ecdb7e2a87255878b748550d91cfbe0  numpy-1.23.2-cp311-cp311-macosx_10_9_x86_64.whl
    e3004aae46cec9e234f78eaf473272e0  numpy-1.23.2-cp311-cp311-macosx_11_0_arm64.whl
    ec23c73caf581867d5ca9255b802f144  numpy-1.23.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    9b8389f528fe113247954248f0b78ce1  numpy-1.23.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a54b136daa2fbb483909f08eecbfa3c5  numpy-1.23.2-cp311-cp311-win32.whl
    ead32e141857c5ef33b1a6cd88aefc0f  numpy-1.23.2-cp311-cp311-win_amd64.whl
    df1f18e52d0a2840d101fdc9c2c6af84  numpy-1.23.2-cp38-cp38-macosx_10_9_x86_64.whl
    04c986880bb24fac2f44face75eab914  numpy-1.23.2-cp38-cp38-macosx_11_0_arm64.whl
    edeba58edb214390112810f7ead903a8  numpy-1.23.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    c26ea699d94d7f1009c976c66cc4def3  numpy-1.23.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    c246a78b09f8893d998d449dcab0fac3  numpy-1.23.2-cp38-cp38-win32.whl
    b5c5a2f961402259e301c49b8b05de55  numpy-1.23.2-cp38-cp38-win_amd64.whl
    d156dfae94d33eeff7fb9c6e5187e049  numpy-1.23.2-cp39-cp39-macosx_10_9_x86_64.whl
    7f2ad7867c577eab925a31de76486765  numpy-1.23.2-cp39-cp39-macosx_11_0_arm64.whl
    76262a8e5d7a4d945446467467300a10  numpy-1.23.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8ee105f4574d61a2d494418b55f63fcb  numpy-1.23.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    2b7c79cae66023f8e716150223201981  numpy-1.23.2-cp39-cp39-win32.whl
    d7af57dd070ccb165f3893412eb602e3  numpy-1.23.2-cp39-cp39-win_amd64.whl
    355a231dbd87a0f2125cc23eb8f97075  numpy-1.23.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    4ab13c35056f67981d03f9ceec41db42  numpy-1.23.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    3a6f1e1256ee9be10d8cdf6be578fe52  numpy-1.23.2-pp38-pypy38_pp73-win_amd64.whl
    9bf2a361509797de14ceee607387fe0f  numpy-1.23.2.tar.gz
    

    SHA256

    e603ca1fb47b913942f3e660a15e55a9ebca906857edfea476ae5f0fe9b457d5  numpy-1.23.2-cp310-cp310-macosx_10_9_x86_64.whl
    633679a472934b1c20a12ed0c9a6c9eb167fbb4cb89031939bfd03dd9dbc62b8  numpy-1.23.2-cp310-cp310-macosx_11_0_arm64.whl
    17e5226674f6ea79e14e3b91bfbc153fdf3ac13f5cc54ee7bc8fdbe820a32da0  numpy-1.23.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    bdc02c0235b261925102b1bd586579b7158e9d0d07ecb61148a1799214a4afd5  numpy-1.23.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    df28dda02c9328e122661f399f7655cdcbcf22ea42daa3650a26bce08a187450  numpy-1.23.2-cp310-cp310-win32.whl
    8ebf7e194b89bc66b78475bd3624d92980fca4e5bb86dda08d677d786fefc414  numpy-1.23.2-cp310-cp310-win_amd64.whl
    dc76bca1ca98f4b122114435f83f1fcf3c0fe48e4e6f660e07996abf2f53903c  numpy-1.23.2-cp311-cp311-macosx_10_9_x86_64.whl
    ecfdd68d334a6b97472ed032b5b37a30d8217c097acfff15e8452c710e775524  numpy-1.23.2-cp311-cp311-macosx_11_0_arm64.whl
    5593f67e66dea4e237f5af998d31a43e447786b2154ba1ad833676c788f37cde  numpy-1.23.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    ac987b35df8c2a2eab495ee206658117e9ce867acf3ccb376a19e83070e69418  numpy-1.23.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    d98addfd3c8728ee8b2c49126f3c44c703e2b005d4a95998e2167af176a9e722  numpy-1.23.2-cp311-cp311-win32.whl
    8ecb818231afe5f0f568c81f12ce50f2b828ff2b27487520d85eb44c71313b9e  numpy-1.23.2-cp311-cp311-win_amd64.whl
    909c56c4d4341ec8315291a105169d8aae732cfb4c250fbc375a1efb7a844f8f  numpy-1.23.2-cp38-cp38-macosx_10_9_x86_64.whl
    8247f01c4721479e482cc2f9f7d973f3f47810cbc8c65e38fd1bbd3141cc9842  numpy-1.23.2-cp38-cp38-macosx_11_0_arm64.whl
    b8b97a8a87cadcd3f94659b4ef6ec056261fa1e1c3317f4193ac231d4df70215  numpy-1.23.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    bd5b7ccae24e3d8501ee5563e82febc1771e73bd268eef82a1e8d2b4d556ae66  numpy-1.23.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    9b83d48e464f393d46e8dd8171687394d39bc5abfe2978896b77dc2604e8635d  numpy-1.23.2-cp38-cp38-win32.whl
    dec198619b7dbd6db58603cd256e092bcadef22a796f778bf87f8592b468441d  numpy-1.23.2-cp38-cp38-win_amd64.whl
    4f41f5bf20d9a521f8cab3a34557cd77b6f205ab2116651f12959714494268b0  numpy-1.23.2-cp39-cp39-macosx_10_9_x86_64.whl
    806cc25d5c43e240db709875e947076b2826f47c2c340a5a2f36da5bb10c58d6  numpy-1.23.2-cp39-cp39-macosx_11_0_arm64.whl
    8f9d84a24889ebb4c641a9b99e54adb8cab50972f0166a3abc14c3b93163f074  numpy-1.23.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    c403c81bb8ffb1c993d0165a11493fd4bf1353d258f6997b3ee288b0a48fce77  numpy-1.23.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    cf8c6aed12a935abf2e290860af8e77b26a042eb7f2582ff83dc7ed5f963340c  numpy-1.23.2-cp39-cp39-win32.whl
    5e28cd64624dc2354a349152599e55308eb6ca95a13ce6a7d5679ebff2962913  numpy-1.23.2-cp39-cp39-win_amd64.whl
    806970e69106556d1dd200e26647e9bee5e2b3f1814f9da104a943e8d548ca38  numpy-1.23.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    2bd879d3ca4b6f39b7770829f73278b7c5e248c91d538aab1e506c628353e47f  numpy-1.23.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    be6b350dfbc7f708d9d853663772a9310783ea58f6035eec649fb9c4371b5389  numpy-1.23.2-pp38-pypy38_pp73-win_amd64.whl
    b78d00e48261fbbd04aa0d7427cf78d18401ee0abd89c7559bbf422e5b1c7d01  numpy-1.23.2.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.23.2-changelog.rst(2.05 KB)
    numpy-1.23.2.tar.gz(10.22 MB)
    README.rst(8.20 KB)
  • v1.23.1(Jul 9, 2022)

    NumPy 1.23.1 Release Notes

    The NumPy 1.23.1 is a maintenance release that fixes bugs discovered after the 1.23.0 release. Notable fixes are:

    • Fix searchsorted for float16 NaNs
    • Fix compilation on Apple M1
    • Fix KeyError in crackfortran operator support (Slycot)

    The Python version supported for this release are 3.8-3.10.

    Contributors

    A total of 7 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Charles Harris
    • Matthias Koeppe +
    • Pranab Das +
    • Rohit Goswami
    • Sebastian Berg
    • Serge Guelton
    • Srimukh Sripada +

    Pull requests merged

    A total of 8 pull requests were merged for this release.

    • #21866: BUG: Fix discovered MachAr (still used within valgrind)
    • #21867: BUG: Handle NaNs correctly for float16 during sorting
    • #21868: BUG: Use keepdims during normalization in np.average and...
    • #21869: DOC: mention changes to max_rows behaviour in np.loadtxt
    • #21870: BUG: Reject non integer array-likes with size 1 in delete
    • #21949: BLD: Make can_link_svml return False for 32bit builds on x86_64
    • #21951: BUG: Reorder extern "C" to only apply to function declarations...
    • #21952: BUG: Fix KeyError in crackfortran operator support

    Checksums

    MD5

    79f0d8c114f282b834b49209d6955f98  numpy-1.23.1-cp310-cp310-macosx_10_9_x86_64.whl
    42a89a88ef26b768e8933ce46b1cc2bd  numpy-1.23.1-cp310-cp310-macosx_11_0_arm64.whl
    1c1d68b3483eaf99b9a3583c8ac8bf47  numpy-1.23.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    9d3e9f7f9b3dce6cf15209e4f25f346e  numpy-1.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a9afb7c34b48d08fc50427ae6516b42d  numpy-1.23.1-cp310-cp310-win32.whl
    a0e02823883bdfcec49309e108f65e13  numpy-1.23.1-cp310-cp310-win_amd64.whl
    f40cdf4ec7bb0cf31a90a4fa294323c2  numpy-1.23.1-cp38-cp38-macosx_10_9_x86_64.whl
    80115a959f0fe30d6c401b2650a61c70  numpy-1.23.1-cp38-cp38-macosx_11_0_arm64.whl
    1cf199b3a93960c4f269853a56a8d8eb  numpy-1.23.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    aa6f0f192312c79cd770c2c395e9982a  numpy-1.23.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    d07bee0ea3142a96cb5e4e16aca273ca  numpy-1.23.1-cp38-cp38-win32.whl
    02d0734ae8ad5e18a40c6c6de18486a0  numpy-1.23.1-cp38-cp38-win_amd64.whl
    e1ca14acd7d83bc74bdf6ab0bb4bd195  numpy-1.23.1-cp39-cp39-macosx_10_9_x86_64.whl
    c9152c62b2f31e742e24bfdc97b28666  numpy-1.23.1-cp39-cp39-macosx_11_0_arm64.whl
    05b0b37c92f7a7e7c01afac0a5322b40  numpy-1.23.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    d9810bb71a0ef9837e87ea5c44fcab5e  numpy-1.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    4255577f857e838f7a94e3a614ddc5eb  numpy-1.23.1-cp39-cp39-win32.whl
    787486e3cd87b98024ffe1c969c4db7a  numpy-1.23.1-cp39-cp39-win_amd64.whl
    5c7b2d1471b1b9ec6ff1cb3fe1f8ac14  numpy-1.23.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    40d5b2ff869707b0d97325ce44631135  numpy-1.23.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    44ce1e07927cc09415df9898857792da  numpy-1.23.1-pp38-pypy38_pp73-win_amd64.whl
    4f8636a9c1a77ca0fb923ba55378891f  numpy-1.23.1.tar.gz
    

    SHA256

    b15c3f1ed08df4980e02cc79ee058b788a3d0bef2fb3c9ca90bb8cbd5b8a3a04  numpy-1.23.1-cp310-cp310-macosx_10_9_x86_64.whl
    9ce242162015b7e88092dccd0e854548c0926b75c7924a3495e02c6067aba1f5  numpy-1.23.1-cp310-cp310-macosx_11_0_arm64.whl
    e0d7447679ae9a7124385ccf0ea990bb85bb869cef217e2ea6c844b6a6855073  numpy-1.23.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    3119daed207e9410eaf57dcf9591fdc68045f60483d94956bee0bfdcba790953  numpy-1.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    3ab67966c8d45d55a2bdf40701536af6443763907086c0a6d1232688e27e5447  numpy-1.23.1-cp310-cp310-win32.whl
    1865fdf51446839ca3fffaab172461f2b781163f6f395f1aed256b1ddc253622  numpy-1.23.1-cp310-cp310-win_amd64.whl
    aeba539285dcf0a1ba755945865ec61240ede5432df41d6e29fab305f4384db2  numpy-1.23.1-cp38-cp38-macosx_10_9_x86_64.whl
    7e8229f3687cdadba2c4faef39204feb51ef7c1a9b669247d49a24f3e2e1617c  numpy-1.23.1-cp38-cp38-macosx_11_0_arm64.whl
    68b69f52e6545af010b76516f5daaef6173e73353e3295c5cb9f96c35d755641  numpy-1.23.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    1408c3527a74a0209c781ac82bde2182b0f0bf54dea6e6a363fe0cc4488a7ce7  numpy-1.23.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    47f10ab202fe4d8495ff484b5561c65dd59177949ca07975663f4494f7269e3e  numpy-1.23.1-cp38-cp38-win32.whl
    37e5ebebb0eb54c5b4a9b04e6f3018e16b8ef257d26c8945925ba8105008e645  numpy-1.23.1-cp38-cp38-win_amd64.whl
    173f28921b15d341afadf6c3898a34f20a0569e4ad5435297ba262ee8941e77b  numpy-1.23.1-cp39-cp39-macosx_10_9_x86_64.whl
    876f60de09734fbcb4e27a97c9a286b51284df1326b1ac5f1bf0ad3678236b22  numpy-1.23.1-cp39-cp39-macosx_11_0_arm64.whl
    35590b9c33c0f1c9732b3231bb6a72d1e4f77872390c47d50a615686ae7ed3fd  numpy-1.23.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a35c4e64dfca659fe4d0f1421fc0f05b8ed1ca8c46fb73d9e5a7f175f85696bb  numpy-1.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    c2f91f88230042a130ceb1b496932aa717dcbd665350beb821534c5c7e15881c  numpy-1.23.1-cp39-cp39-win32.whl
    37ece2bd095e9781a7156852e43d18044fd0d742934833335599c583618181b9  numpy-1.23.1-cp39-cp39-win_amd64.whl
    8002574a6b46ac3b5739a003b5233376aeac5163e5dcd43dd7ad062f3e186129  numpy-1.23.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    5d732d17b8a9061540a10fda5bfeabca5785700ab5469a5e9b93aca5e2d3a5fb  numpy-1.23.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    55df0f7483b822855af67e38fb3a526e787adf189383b4934305565d71c4b148  numpy-1.23.1-pp38-pypy38_pp73-win_amd64.whl
    d748ef349bfef2e1194b59da37ed5a29c19ea8d7e6342019921ba2ba4fd8b624  numpy-1.23.1.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.23.1-changelog.rst(1.29 KB)
    numpy-1.23.1.tar.gz(10.22 MB)
    README.rst(6.24 KB)
  • v1.23.0(Jun 22, 2022)

    NumPy 1.23.0 Release Notes

    The NumPy 1.23.0 release continues the ongoing work to improve the handling and promotion of dtypes, increase the execution speed, clarify the documentation, and expire old deprecations. The highlights are:

    • Implementation of loadtxt in C, greatly improving its performance.
    • Exposing DLPack at the Python level for easy data exchange.
    • Changes to the promotion and comparisons of structured dtypes.
    • Improvements to f2py.

    See below for the details,

    New functions

    • A masked array specialization of ndenumerate is now available as numpy.ma.ndenumerate. It provides an alternative to numpy.ndenumerate and skips masked values by default.

      (gh-20020)

    • numpy.from_dlpack has been added to allow easy exchange of data using the DLPack protocol. It accepts Python objects that implement the __dlpack__ and __dlpack_device__ methods and returns a ndarray object which is generally the view of the data of the input object.

      (gh-21145)

    Deprecations

    • Setting __array_finalize__ to None is deprecated. It must now be a method and may wish to call super().__array_finalize__(obj) after checking for None or if the NumPy version is sufficiently new.

      (gh-20766)

    • Using axis=32 (axis=np.MAXDIMS) in many cases had the same meaning as axis=None. This is deprecated and axis=None must be used instead.

      (gh-20920)

    • The hook function PyDataMem_SetEventHook has been deprecated and the demonstration of its use in tool/allocation_tracking has been removed. The ability to track allocations is now built-in to python via tracemalloc.

      (gh-20394)

    • numpy.distutils has been deprecated, as a result of distutils itself being deprecated. It will not be present in NumPy for Python >= 3.12, and will be removed completely 2 years after the release of Python 3.12 For more details, see distutils-status-migration{.interpreted-text role="ref"}.

      (gh-20875)

    • numpy.loadtxt will now give a DeprecationWarning when an integer dtype is requested but the value is formatted as a floating point number.

      (gh-21663)

    Expired deprecations

    • The NpzFile.iteritems() and NpzFile.iterkeys() methods have been removed as part of the continued removal of Python 2 compatibility. This concludes the deprecation from 1.15.

      (gh-16830)

    • The alen and asscalar functions have been removed.

      (gh-20414)

    • The UPDATEIFCOPY array flag has been removed together with the enum NPY_ARRAY_UPDATEIFCOPY. The associated (and deprecated) PyArray_XDECREF_ERR was also removed. These were all deprecated in 1.14. They are replaced by WRITEBACKIFCOPY, that requires calling PyArray_ResoveWritebackIfCopy before the array is deallocated.

      (gh-20589)

    • Exceptions will be raised during array-like creation. When an object raised an exception during access of the special attributes __array__ or __array_interface__, this exception was usually ignored. This behaviour was deprecated in 1.21, and the exception will now be raised.

      (gh-20835)

    • Multidimensional indexing with non-tuple values is not allowed. Previously, code such as arr[ind] where ind = [[0, 1], [0, 1]] produced a FutureWarning and was interpreted as a multidimensional index (i.e., arr[tuple(ind)]). Now this example is treated like an array index over a single dimension (arr[array(ind)]). Multidimensional indexing with anything but a tuple was deprecated in NumPy 1.15.

      (gh-21029)

    • Changing to a dtype of different size in F-contiguous arrays is no longer permitted. Deprecated since Numpy 1.11.0. See below for an extended explanation of the effects of this change.

      (gh-20722)

    New Features

    crackfortran has support for operator and assignment overloading

    crackfortran parser now understands operator and assignment definitions in a module. They are added in the body list of the module which contains a new key implementedby listing the names of the subroutines or functions implementing the operator or assignment.

    (gh-15006)

    f2py supports reading access type attributes from derived type statements

    As a result, one does not need to use public or private statements to specify derived type access properties.

    (gh-15844)

    New parameter ndmin added to genfromtxt

    This parameter behaves the same as ndmin from numpy.loadtxt.

    (gh-20500)

    np.loadtxt now supports quote character and single converter function

    numpy.loadtxt now supports an additional quotechar keyword argument which is not set by default. Using quotechar='"' will read quoted fields as used by the Excel CSV dialect.

    Further, it is now possible to pass a single callable rather than a dictionary for the converters argument.

    (gh-20580)

    Changing to dtype of a different size now requires contiguity of only the last axis

    Previously, viewing an array with a dtype of a different item size required that the entire array be C-contiguous. This limitation would unnecessarily force the user to make contiguous copies of non-contiguous arrays before being able to change the dtype.

    This change affects not only ndarray.view, but other construction mechanisms, including the discouraged direct assignment to ndarray.dtype.

    This change expires the deprecation regarding the viewing of F-contiguous arrays, described elsewhere in the release notes.

    (gh-20722)

    Deterministic output files for F2PY

    For F77 inputs, f2py will generate modname-f2pywrappers.f unconditionally, though these may be empty. For free-form inputs, modname-f2pywrappers.f, modname-f2pywrappers2.f90 will both be generated unconditionally, and may be empty. This allows writing generic output rules in cmake or meson and other build systems. Older behavior can be restored by passing --skip-empty-wrappers to f2py. f2py-meson{.interpreted-text role="ref"} details usage.

    (gh-21187)

    keepdims parameter for average

    The parameter keepdims was added to the functions numpy.average and numpy.ma.average. The parameter has the same meaning as it does in reduction functions such as numpy.sum or numpy.mean.

    (gh-21485)

    New parameter equal_nan added to np.unique

    np.unique was changed in 1.21 to treat all NaN values as equal and return a single NaN. Setting equal_nan=False will restore pre-1.21 behavior to treat NaNs as unique. Defaults to True.

    (gh-21623)

    Compatibility notes

    1D np.linalg.norm preserves float input types, even for scalar results

    Previously, this would promote to float64 when the ord argument was not one of the explicitly listed values, e.g. ord=3:

    >>> f32 = np.float32([1, 2])
    >>> np.linalg.norm(f32, 2).dtype
    dtype('float32')
    >>> np.linalg.norm(f32, 3)
    dtype('float64')  # numpy 1.22
    dtype('float32')  # numpy 1.23
    

    This change affects only float32 and float16 vectors with ord other than -Inf, 0, 1, 2, and Inf.

    (gh-17709)

    Changes to structured (void) dtype promotion and comparisons

    In general, NumPy now defines correct, but slightly limited, promotion for structured dtypes by promoting the subtypes of each field instead of raising an exception:

    >>> np.result_type(np.dtype("i,i"), np.dtype("i,d"))
    dtype([('f0', '<i4'), ('f1', '<f8')])
    

    For promotion matching field names, order, and titles are enforced, however padding is ignored. Promotion involving structured dtypes now always ensures native byte-order for all fields (which may change the result of np.concatenate) and ensures that the result will be "packed", i.e. all fields are ordered contiguously and padding is removed. See structured_dtype_comparison_and_promotion{.interpreted-text role="ref"} for further details.

    The repr of aligned structures will now never print the long form including offsets and itemsize unless the structure includes padding not guaranteed by align=True.

    In alignment with the above changes to the promotion logic, the casting safety has been updated:

    • "equiv" enforces matching names and titles. The itemsize is allowed to differ due to padding.
    • "safe" allows mismatching field names and titles
    • The cast safety is limited by the cast safety of each included field.
    • The order of fields is used to decide cast safety of each individual field. Previously, the field names were used and only unsafe casts were possible when names mismatched.

    The main important change here is that name mismatches are now considered "safe" casts.

    (gh-19226)

    NPY_RELAXED_STRIDES_CHECKING has been removed

    NumPy cannot be compiled with NPY_RELAXED_STRIDES_CHECKING=0 anymore. Relaxed strides have been the default for many years and the option was initially introduced to allow a smoother transition.

    (gh-20220)

    np.loadtxt has recieved several changes

    The row counting of numpy.loadtxt was fixed. loadtxt ignores fully empty lines in the file, but counted them towards max_rows. When max_rows is used and the file contains empty lines, these will now not be counted. Previously, it was possible that the result contained fewer than max_rows rows even though more data was available to be read. If the old behaviour is required, itertools.islice may be used:

    import itertools
    lines = itertools.islice(open("file"), 0, max_rows)
    result = np.loadtxt(lines, ...)
    

    While generally much faster and improved, numpy.loadtxt may now fail to converter certain strings to numbers that were previously successfully read. The most important cases for this are:

    • Parsing floating point values such as 1.0 into integers is now deprecated.
    • Parsing hexadecimal floats such as 0x3p3 will fail
    • An _ was previously accepted as a thousands delimiter 100_000. This will now result in an error.

    If you experience these limitations, they can all be worked around by passing appropriate converters=. NumPy now supports passing a single converter to be used for all columns to make this more convenient. For example, converters=float.fromhex can read hexadecimal float numbers and converters=int will be able to read 100_000.

    Further, the error messages have been generally improved. However, this means that error types may differ. In particularly, a ValueError is now always raised when parsing of a single entry fails.

    (gh-20580)

    Improvements

    ndarray.__array_finalize__ is now callable

    This means subclasses can now use super().__array_finalize__(obj) without worrying whether ndarray is their superclass or not. The actual call remains a no-op.

    (gh-20766)

    Add support for VSX4/Power10

    With VSX4/Power10 enablement, the new instructions available in Power ISA 3.1 can be used to accelerate some NumPy operations, e.g., floor_divide, modulo, etc.

    (gh-20821)

    np.fromiter now accepts objects and subarrays

    The numpy.fromiter function now supports object and subarray dtypes. Please see he function documentation for examples.

    (gh-20993)

    Math C library feature detection now uses correct signatures

    Compiling is preceded by a detection phase to determine whether the underlying libc supports certain math operations. Previously this code did not respect the proper signatures. Fixing this enables compilation for the wasm-ld backend (compilation for web assembly) and reduces the number of warnings.

    (gh-21154)

    np.kron now maintains subclass information

    np.kron maintains subclass information now such as masked arrays while computing the Kronecker product of the inputs

    >>> x = ma.array([[1, 2], [3, 4]], mask=[[0, 1], [1, 0]])
    >>> np.kron(x,x)
    masked_array(
      data=[[1, --, --, --],
            [--, 4, --, --],
            [--, --, 4, --],
            [--, --, --, 16]],
      mask=[[False,  True,  True,  True],
            [ True, False,  True,  True],
            [ True,  True, False,  True],
            [ True,  True,  True, False]],
      fill_value=999999)
    

    :warning: Warning, np.kron output now follows ufunc ordering (multiply) to determine the output class type

    >>> class myarr(np.ndarray):
    >>>    __array_priority__ = -1
    >>> a = np.ones([2, 2])
    >>> ma = myarray(a.shape, a.dtype, a.data)
    >>> type(np.kron(a, ma)) == np.ndarray
    False # Before it was True
    >>> type(np.kron(a, ma)) == myarr
    True
    

    (gh-21262)

    Performance improvements and changes

    Faster np.loadtxt

    numpy.loadtxt is now generally much faster than previously as most of it is now implemented in C.

    (gh-20580)

    Faster reduction operators

    Reduction operations like numpy.sum, numpy.prod, numpy.add.reduce, numpy.logical_and.reduce on contiguous integer-based arrays are now much faster.

    (gh-21001)

    Faster np.where

    numpy.where is now much faster than previously on unpredictable/random input data.

    (gh-21130)

    Faster operations on NumPy scalars

    Many operations on NumPy scalars are now significantly faster, although rare operations (e.g. with 0-D arrays rather than scalars) may be slower in some cases. However, even with these improvements users who want the best performance for their scalars, may want to convert a known NumPy scalar into a Python one using scalar.item().

    (gh-21188)

    Faster np.kron

    numpy.kron is about 80% faster as the product is now computed using broadcasting.

    (gh-21354)

    Checksums

    MD5

    21839aaeab3088e685d7c8d0e1856a23  numpy-1.23.0-cp310-cp310-macosx_10_9_x86_64.whl
    e657684ea521c50de0197aabfb44e78d  numpy-1.23.0-cp310-cp310-macosx_11_0_arm64.whl
    219017660861fdec59b852630e3fef2a  numpy-1.23.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    03c3df83b8327910482a7d24ebe9213b  numpy-1.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b8f06ce4054acc147845a9643bd36082  numpy-1.23.0-cp310-cp310-win32.whl
    877322db5a62634eef4e351db99a070d  numpy-1.23.0-cp310-cp310-win_amd64.whl
    7bb54f95e74306eff733466b6343695f  numpy-1.23.0-cp38-cp38-macosx_10_9_x86_64.whl
    5514a0030e5cf065e916950737d6d129  numpy-1.23.0-cp38-cp38-macosx_11_0_arm64.whl
    22d43465791814fe50e03ded430bd80c  numpy-1.23.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    771a1f7e488327645bac5b54dd2f6286  numpy-1.23.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    449bfa2d55aff3e722d2fc85a7549620  numpy-1.23.0-cp38-cp38-win32.whl
    60c7d27cf92dadb6d206df6e65b1032f  numpy-1.23.0-cp38-cp38-win_amd64.whl
    dc2a5c5d2223f7b45a45f7f760d0f2db  numpy-1.23.0-cp39-cp39-macosx_10_9_x86_64.whl
    ba5729353c3521ed7ee72c796e77a546  numpy-1.23.0-cp39-cp39-macosx_11_0_arm64.whl
    06d5cd49de096482944dead2eb92d783  numpy-1.23.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    6ff50a994f6006349b5f1415e4da6f45  numpy-1.23.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    49185f219512403ef23d43d6f2adbefd  numpy-1.23.0-cp39-cp39-win32.whl
    ff126a84dcf91700f9ca13ff606d109f  numpy-1.23.0-cp39-cp39-win_amd64.whl
    e1462428487dc599cdffb723dec642c4  numpy-1.23.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    fef1d20265135737fbc0f91ca4441990  numpy-1.23.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    4f8142288202a32c682d01921d6c2c78  numpy-1.23.0-pp38-pypy38_pp73-win_amd64.whl
    513e4241d06b8fae5732cd049cdf3b57  numpy-1.23.0.tar.gz
    

    SHA256

    58bfd40eb478f54ff7a5710dd61c8097e169bc36cc68333d00a9bcd8def53b38  numpy-1.23.0-cp310-cp310-macosx_10_9_x86_64.whl
    196cd074c3f97c4121601790955f915187736f9cf458d3ee1f1b46aff2b1ade0  numpy-1.23.0-cp310-cp310-macosx_11_0_arm64.whl
    f1d88ef79e0a7fa631bb2c3dda1ea46b32b1fe614e10fedd611d3d5398447f2f  numpy-1.23.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    d54b3b828d618a19779a84c3ad952e96e2c2311b16384e973e671aa5be1f6187  numpy-1.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    2b2da66582f3a69c8ce25ed7921dcd8010d05e59ac8d89d126a299be60421171  numpy-1.23.0-cp310-cp310-win32.whl
    97a76604d9b0e79f59baeca16593c711fddb44936e40310f78bfef79ee9a835f  numpy-1.23.0-cp310-cp310-win_amd64.whl
    d8cc87bed09de55477dba9da370c1679bd534df9baa171dd01accbb09687dac3  numpy-1.23.0-cp38-cp38-macosx_10_9_x86_64.whl
    f0f18804df7370571fb65db9b98bf1378172bd4e962482b857e612d1fec0f53e  numpy-1.23.0-cp38-cp38-macosx_11_0_arm64.whl
    ac86f407873b952679f5f9e6c0612687e51547af0e14ddea1eedfcb22466babd  numpy-1.23.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    ae8adff4172692ce56233db04b7ce5792186f179c415c37d539c25de7298d25d  numpy-1.23.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    fe8b9683eb26d2c4d5db32cd29b38fdcf8381324ab48313b5b69088e0e355379  numpy-1.23.0-cp38-cp38-win32.whl
    5043bcd71fcc458dfb8a0fc5509bbc979da0131b9d08e3d5f50fb0bbb36f169a  numpy-1.23.0-cp38-cp38-win_amd64.whl
    1c29b44905af288b3919803aceb6ec7fec77406d8b08aaa2e8b9e63d0fe2f160  numpy-1.23.0-cp39-cp39-macosx_10_9_x86_64.whl
    98e8e0d8d69ff4d3fa63e6c61e8cfe2d03c29b16b58dbef1f9baa175bbed7860  numpy-1.23.0-cp39-cp39-macosx_11_0_arm64.whl
    79a506cacf2be3a74ead5467aee97b81fca00c9c4c8b3ba16dbab488cd99ba10  numpy-1.23.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    092f5e6025813e64ad6d1b52b519165d08c730d099c114a9247c9bb635a2a450  numpy-1.23.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    d6ca8dabe696c2785d0c8c9b0d8a9b6e5fdbe4f922bde70d57fa1a2848134f95  numpy-1.23.0-cp39-cp39-win32.whl
    fc431493df245f3c627c0c05c2bd134535e7929dbe2e602b80e42bf52ff760bc  numpy-1.23.0-cp39-cp39-win_amd64.whl
    f9c3fc2adf67762c9fe1849c859942d23f8d3e0bee7b5ed3d4a9c3eeb50a2f07  numpy-1.23.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    d0d2094e8f4d760500394d77b383a1b06d3663e8892cdf5df3c592f55f3bff66  numpy-1.23.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    94b170b4fa0168cd6be4becf37cb5b127bd12a795123984385b8cd4aca9857e5  numpy-1.23.0-pp38-pypy38_pp73-win_amd64.whl
    bd3fa4fe2e38533d5336e1272fc4e765cabbbde144309ccee8675509d5cd7b05  numpy-1.23.0.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.23.0-changelog.rst(54.83 KB)
    numpy-1.23.0.tar.gz(10.21 MB)
    README.rst(20.73 KB)
  • v1.23.0rc3(Jun 11, 2022)

    NumPy 1.23.0 Release Notes

    The NumPy 1.23.0 release continues the ongoing work to improve the handling and promotion of dtypes, increase the execution speed, clarify the documentation, and expire old deprecations. The highlights are:

    • Implementation of loadtxt in C, greatly improving its performance.
    • Exposing DLPack at the Python level for easy data exchange.
    • Changes to the promotion and comparisons of structured dtypes.
    • Improvements to f2py.

    See below for the details,

    New functions

    • A masked array specialization of ndenumerate is now available as numpy.ma.ndenumerate. It provides an alternative to numpy.ndenumerate and skips masked values by default.

      (gh-20020)

    • numpy.from_dlpack has been added to allow easy exchange of data using the DLPack protocol. It accepts Python objects that implement the __dlpack__ and __dlpack_device__ methods and returns a ndarray object which is generally the view of the data of the input object.

      (gh-21145)

    Deprecations

    • Setting __array_finalize__ to None is deprecated. It must now be a method and may wish to call super().__array_finalize__(obj) after checking for None or if the NumPy version is sufficiently new.

      (gh-20766)

    • Using axis=32 (axis=np.MAXDIMS) in many cases had the same meaning as axis=None. This is deprecated and axis=None must be used instead.

      (gh-20920)

    • The hook function PyDataMem_SetEventHook has been deprecated and the demonstration of its use in tool/allocation_tracking has been removed. The ability to track allocations is now built-in to python via tracemalloc.

      (gh-20394)

    • numpy.distutils has been deprecated, as a result of distutils itself being deprecated. It will not be present in NumPy for Python >= 3.12, and will be removed completely 2 years after the release of Python 3.12 For more details, see distutils-status-migration{.interpreted-text role="ref"}.

      (gh-20875)

    • numpy.loadtxt will now give a DeprecationWarning when an integer dtype is requested but the value is formatted as a floating point number.

      (gh-21663)

    Expired deprecations

    • The NpzFile.iteritems() and NpzFile.iterkeys() methods have been removed as part of the continued removal of Python 2 compatibility. This concludes the deprecation from 1.15.

      (gh-16830)

    • The alen and asscalar functions have been removed.

      (gh-20414)

    • The UPDATEIFCOPY array flag has been removed together with the enum NPY_ARRAY_UPDATEIFCOPY. The associated (and deprecated) PyArray_XDECREF_ERR was also removed. These were all deprecated in 1.14. They are replaced by WRITEBACKIFCOPY, that requires calling PyArray_ResoveWritebackIfCopy before the array is deallocated.

      (gh-20589)

    • Exceptions will be raised during array-like creation. When an object raised an exception during access of the special attributes __array__ or __array_interface__, this exception was usually ignored. This behaviour was deprecated in 1.21, and the exception will now be raised.

      (gh-20835)

    • Multidimensional indexing with non-tuple values is not allowed. Previously, code such as arr[ind] where ind = [[0, 1], [0, 1]] produced a FutureWarning and was interpreted as a multidimensional index (i.e., arr[tuple(ind)]). Now this example is treated like an array index over a single dimension (arr[array(ind)]). Multidimensional indexing with anything but a tuple was deprecated in NumPy 1.15.

      (gh-21029)

    • Changing to a dtype of different size in F-contiguous arrays is no longer permitted. Deprecated since Numpy 1.11.0. See below for an extended explanation of the effects of this change.

      (gh-20722)

    New Features

    crackfortran has support for operator and assignment overloading

    crackfortran parser now understands operator and assignment definitions in a module. They are added in the body list of the module which contains a new key implementedby listing the names of the subroutines or functions implementing the operator or assignment.

    (gh-15006)

    f2py supports reading access type attributes from derived type statements

    As a result, one does not need to use public or private statements to specify derived type access properties.

    (gh-15844)

    New parameter ndmin added to genfromtxt

    This parameter behaves the same as ndmin from numpy.loadtxt.

    (gh-20500)

    np.loadtxt now supports quote character and single converter function

    numpy.loadtxt now supports an additional quotechar keyword argument which is not set by default. Using quotechar='"' will read quoted fields as used by the Excel CSV dialect.

    Further, it is now possible to pass a single callable rather than a dictionary for the converters argument.

    (gh-20580)

    Changing to dtype of a different size now requires contiguity of only the last axis

    Previously, viewing an array with a dtype of a different item size required that the entire array be C-contiguous. This limitation would unnecessarily force the user to make contiguous copies of non-contiguous arrays before being able to change the dtype.

    This change affects not only ndarray.view, but other construction mechanisms, including the discouraged direct assignment to ndarray.dtype.

    This change expires the deprecation regarding the viewing of F-contiguous arrays, described elsewhere in the release notes.

    (gh-20722)

    Deterministic output files for F2PY

    For F77 inputs, f2py will generate modname-f2pywrappers.f unconditionally, though these may be empty. For free-form inputs, modname-f2pywrappers.f, modname-f2pywrappers2.f90 will both be generated unconditionally, and may be empty. This allows writing generic output rules in cmake or meson and other build systems. Older behavior can be restored by passing --skip-empty-wrappers to f2py. f2py-meson{.interpreted-text role="ref"} details usage.

    (gh-21187)

    keepdims parameter for average

    The parameter keepdims was added to the functions numpy.average and numpy.ma.average. The parameter has the same meaning as it does in reduction functions such as numpy.sum or numpy.mean.

    (gh-21485)

    New parameter equal_nan added to np.unique

    np.unique was changed in 1.21 to treat all NaN values as equal and return a single NaN. Setting equal_nan=False will restore pre-1.21 behavior to treat NaNs as unique. Defaults to True.

    (gh-21623)

    Compatibility notes

    1D np.linalg.norm preserves float input types, even for scalar results

    Previously, this would promote to float64 when the ord argument was not one of the explicitly listed values, e.g. ord=3:

    >>> f32 = np.float32([1, 2])
    >>> np.linalg.norm(f32, 2).dtype
    dtype('float32')
    >>> np.linalg.norm(f32, 3)
    dtype('float64')  # numpy 1.22
    dtype('float32')  # numpy 1.23
    

    This change affects only float32 and float16 vectors with ord other than -Inf, 0, 1, 2, and Inf.

    (gh-17709)

    Changes to structured (void) dtype promotion and comparisons

    In general, NumPy now defines correct, but slightly limited, promotion for structured dtypes by promoting the subtypes of each field instead of raising an exception:

    >>> np.result_type(np.dtype("i,i"), np.dtype("i,d"))
    dtype([('f0', '<i4'), ('f1', '<f8')])
    

    For promotion matching field names, order, and titles are enforced, however padding is ignored. Promotion involving structured dtypes now always ensures native byte-order for all fields (which may change the result of np.concatenate) and ensures that the result will be "packed", i.e. all fields are ordered contiguously and padding is removed. See structured_dtype_comparison_and_promotion{.interpreted-text role="ref"} for further details.

    The repr of aligned structures will now never print the long form including offsets and itemsize unless the structure includes padding not guaranteed by align=True.

    In alignment with the above changes to the promotion logic, the casting safety has been updated:

    • "equiv" enforces matching names and titles. The itemsize is allowed to differ due to padding.
    • "safe" allows mismatching field names and titles
    • The cast safety is limited by the cast safety of each included field.
    • The order of fields is used to decide cast safety of each individual field. Previously, the field names were used and only unsafe casts were possible when names mismatched.

    The main important change here is that name mismatches are now considered "safe" casts.

    (gh-19226)

    NPY_RELAXED_STRIDES_CHECKING has been removed

    NumPy cannot be compiled with NPY_RELAXED_STRIDES_CHECKING=0 anymore. Relaxed strides have been the default for many years and the option was initially introduced to allow a smoother transition.

    (gh-20220)

    np.loadtxt has recieved several changes

    The row counting of numpy.loadtxt was fixed. loadtxt ignores fully empty lines in the file, but counted them towards max_rows. When max_rows is used and the file contains empty lines, these will now not be counted. Previously, it was possible that the result contained fewer than max_rows rows even though more data was available to be read. If the old behaviour is required, itertools.islice may be used:

    import itertools
    lines = itertools.islice(open("file"), 0, max_rows)
    result = np.loadtxt(lines, ...)
    

    While generally much faster and improved, numpy.loadtxt may now fail to converter certain strings to numbers that were previously successfully read. The most important cases for this are:

    • Parsing floating point values such as 1.0 into integers is now deprecated.
    • Parsing hexadecimal floats such as 0x3p3 will fail
    • An _ was previously accepted as a thousands delimiter 100_000. This will now result in an error.

    If you experience these limitations, they can all be worked around by passing appropriate converters=. NumPy now supports passing a single converter to be used for all columns to make this more convenient. For example, converters=float.fromhex can read hexadecimal float numbers and converters=int will be able to read 100_000.

    Further, the error messages have been generally improved. However, this means that error types may differ. In particularly, a ValueError is now always raised when parsing of a single entry fails.

    (gh-20580)

    Improvements

    ndarray.__array_finalize__ is now callable

    This means subclasses can now use super().__array_finalize__(obj) without worrying whether ndarray is their superclass or not. The actual call remains a no-op.

    (gh-20766)

    Add support for VSX4/Power10

    With VSX4/Power10 enablement, the new instructions available in Power ISA 3.1 can be used to accelerate some NumPy operations, e.g., floor_divide, modulo, etc.

    (gh-20821)

    np.fromiter now accepts objects and subarrays

    The numpy.fromiter function now supports object and subarray dtypes. Please see he function documentation for examples.

    (gh-20993)

    Math C library feature detection now uses correct signatures

    Compiling is preceded by a detection phase to determine whether the underlying libc supports certain math operations. Previously this code did not respect the proper signatures. Fixing this enables compilation for the wasm-ld backend (compilation for web assembly) and reduces the number of warnings.

    (gh-21154)

    np.kron now maintains subclass information

    np.kron maintains subclass information now such as masked arrays while computing the Kronecker product of the inputs

    >>> x = ma.array([[1, 2], [3, 4]], mask=[[0, 1], [1, 0]])
    >>> np.kron(x,x)
    masked_array(
      data=[[1, --, --, --],
            [--, 4, --, --],
            [--, --, 4, --],
            [--, --, --, 16]],
      mask=[[False,  True,  True,  True],
            [ True, False,  True,  True],
            [ True,  True, False,  True],
            [ True,  True,  True, False]],
      fill_value=999999)
    

    :warning: Warning, np.kron output now follows ufunc ordering (multiply) to determine the output class type

    >>> class myarr(np.ndarray):
    >>>    __array_priority__ = -1
    >>> a = np.ones([2, 2])
    >>> ma = myarray(a.shape, a.dtype, a.data)
    >>> type(np.kron(a, ma)) == np.ndarray
    False # Before it was True
    >>> type(np.kron(a, ma)) == myarr
    True
    

    (gh-21262)

    String comparisons now supported in ufuncs

    The comparison ufuncs [np.equal]{.title-ref}, [np.greater]{.title-ref}, etc. now support unicode and byte string inputs (dtypes S and U). Due to this change a FutureWarning is now given when comparing unicode to byte strings. Such comparisons always returned False and continue to do so at this time.

    (gh-21716)

    Performance improvements and changes

    Faster np.loadtxt

    numpy.loadtxt is now generally much faster than previously as most of it is now implemented in C.

    (gh-20580)

    Faster reduction operators

    Reduction operations like numpy.sum, numpy.prod, numpy.add.reduce, numpy.logical_and.reduce on contiguous integer-based arrays are now much faster.

    (gh-21001)

    Faster np.where

    numpy.where is now much faster than previously on unpredictable/random input data.

    (gh-21130)

    Faster operations on NumPy scalars

    Many operations on NumPy scalars are now significantly faster, although rare operations (e.g. with 0-D arrays rather than scalars) may be slower in some cases. However, even with these improvements users who want the best performance for their scalars, may want to convert a known NumPy scalar into a Python one using scalar.item().

    (gh-21188)

    Faster np.kron

    numpy.kron is about 80% faster as the product is now computed using broadcasting.

    (gh-21354)

    Checksums

    MD5

    527ffa92c1e964bfcfd09497a319090e  numpy-1.23.0rc3-cp310-cp310-macosx_10_9_x86_64.whl
    14538d5c5a9f07c7c54b8f27ffcfcdf8  numpy-1.23.0rc3-cp310-cp310-macosx_11_0_arm64.whl
    2914affc99c1d00a1e31689dfe8200c1  numpy-1.23.0rc3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a72038b74d0fe5d43967fa3c3f44a71a  numpy-1.23.0rc3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b1c01a974cf10fdefe7c346aa09bc20a  numpy-1.23.0rc3-cp310-cp310-win32.whl
    b1ae6d311ad01f15a7cf28dbb906d2a4  numpy-1.23.0rc3-cp310-cp310-win_amd64.whl
    ea734f44ae2b10c9cf1530eece6c58d6  numpy-1.23.0rc3-cp38-cp38-macosx_10_9_x86_64.whl
    8bc2051b1172627cbb7ca503a75fcdd8  numpy-1.23.0rc3-cp38-cp38-macosx_11_0_arm64.whl
    495efaf5566fd119a0f0b4c9339449ed  numpy-1.23.0rc3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    1b93121d0c339b35dc83b92fa67a3545  numpy-1.23.0rc3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    50433ef3beaab89d5485d0fe7cbbaaaa  numpy-1.23.0rc3-cp38-cp38-win32.whl
    9014a7e33d01fd4d36298836b3199eac  numpy-1.23.0rc3-cp38-cp38-win_amd64.whl
    13661a5d83fd2bb423514681d0d00de4  numpy-1.23.0rc3-cp39-cp39-macosx_10_9_x86_64.whl
    11386871be967bcb5331d8289b1186a6  numpy-1.23.0rc3-cp39-cp39-macosx_11_0_arm64.whl
    43e6fa27b8ab7cb367103d1b890ca7c5  numpy-1.23.0rc3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    b9aa6e6cb2ad37993ea4c70e7edeec4c  numpy-1.23.0rc3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    030669015597201aca83e8cb2d2f82ed  numpy-1.23.0rc3-cp39-cp39-win32.whl
    ffab9ff64e6a08784dfb0eab430d4158  numpy-1.23.0rc3-cp39-cp39-win_amd64.whl
    758408262bfc96942193e22cbfdab6dc  numpy-1.23.0rc3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    27fb60bd1cd54e785aa63b1a29b32fb1  numpy-1.23.0rc3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b8819d1885f39a67917faf131e716a16  numpy-1.23.0rc3-pp38-pypy38_pp73-win_amd64.whl
    b6e3a4784ce0ab3d1a9d850fde5049a3  numpy-1.23.0rc3.tar.gz
    

    SHA256

    5716acbd372407b046d168228217533d48f46b1fb76a788a01ce7b446d85e054  numpy-1.23.0rc3-cp310-cp310-macosx_10_9_x86_64.whl
    65ac805918a4793aa50a0f366f0a31aa67e85a3e9a28fbdc49bec076ea9d59dd  numpy-1.23.0rc3-cp310-cp310-macosx_11_0_arm64.whl
    3947ff9ea7f50d44a0c278fb9c9b43109e6b2e02273b4b3341f3eea9fe31cc76  numpy-1.23.0rc3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8635887a615e8d3cf0ce35c401b30ccf7818eb58c9ac282561b2363d85729150  numpy-1.23.0rc3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    68d6f3794c78b37faf015c9d60207aaf156edfaf96b1d8c01a2694953b979b8f  numpy-1.23.0rc3-cp310-cp310-win32.whl
    c3237a338d59e271145e9773020b49dfb77314b749bde67783c45d946346a13f  numpy-1.23.0rc3-cp310-cp310-win_amd64.whl
    db5a2b42d09cc0661fec75b4e3daabff91a4858e67ee106fb793ebcd02ebd7b6  numpy-1.23.0rc3-cp38-cp38-macosx_10_9_x86_64.whl
    fd999d0b503dce88fd97153986c3970154c965cfd1c9835f610e89f0dda3bda3  numpy-1.23.0rc3-cp38-cp38-macosx_11_0_arm64.whl
    bc58787ee33ff7828be36b656b08ddaefb7b24339aacd2e21fb28fc49b44008c  numpy-1.23.0rc3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    fae0b80e6b85e3a72a8f7dab8af91199da31b6d0d86fab36529945f23f806d35  numpy-1.23.0rc3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ca12e7773b4f76addf2f91dad61307426f9c1fdf8da5c00b49080af56a9eeff8  numpy-1.23.0rc3-cp38-cp38-win32.whl
    f403bea354d3c892ab1da29ab9d14d51149491a32731b32a94608e3dcd514533  numpy-1.23.0rc3-cp38-cp38-win_amd64.whl
    849e7aa12c1df7e9f26d1936029710bb6050bc31c9cc9772d83c30e3fc7cf8e9  numpy-1.23.0rc3-cp39-cp39-macosx_10_9_x86_64.whl
    e9ad17a823c106dbed8675f4d831381fe99e9df9945485792d8762c186259dcd  numpy-1.23.0rc3-cp39-cp39-macosx_11_0_arm64.whl
    03d5111e85d6371ffc3678824542a8df69ea206f16f83de76ac10231d40c006b  numpy-1.23.0rc3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    b757b22fab2a3ff1f41d0f2cb69bed337eda211db7a2c981b3f93180e4aa68ea  numpy-1.23.0rc3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    87fd874392c7f8ee23829b4ac6737b19a20aeff2418169afc3e6da00c0e23bc1  numpy-1.23.0rc3-cp39-cp39-win32.whl
    f159357529470285dff46e69d97e3c9694b0bd75229e4592edb02f8b812c7a4c  numpy-1.23.0rc3-cp39-cp39-win_amd64.whl
    a0be42a51fbb6087049dfa9b036568e9674a25fb4615f2bf60f189f435691aa4  numpy-1.23.0rc3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    da170cde43519e5490a1887898719e881575d0f0924ef35fe66d990246db6f0e  numpy-1.23.0rc3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    33aa550e001817c8075c56a3b350fb3687cba66ee55dfbb09085d0d0fd63f6e9  numpy-1.23.0rc3-pp38-pypy38_pp73-win_amd64.whl
    6a8fc5573cc8cb8108cec555bca5745d2798c54eef107d478b4320c1f6542102  numpy-1.23.0rc3.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.23.0-changelog.rst(53.84 KB)
    numpy-1.23.0rc3.tar.gz(10.22 MB)
    README.rst(21.29 KB)
  • v1.23.0rc2(May 30, 2022)

    NumPy 1.23.0 Release Notes

    The NumPy 1.23.0 release continues the ongoing work to improve the handling and promotion of dtypes, increase the execution speed, clarify the documentation, and expire old deprecations. The highlights are:

    • Implementation of loadtxt in C, greatly improving its performance.
    • Exposing DLPack at the Python level for easy data exchange.
    • Changes to the promotion and comparisons of structured dtypes.
    • Improvements to f2py.

    See below for the details,

    New functions

    • A masked array specialization of ndenumerate is now available as numpy.ma.ndenumerate. It provides an alternative to numpy.ndenumerate and skips masked values by default.

      (gh-20020)

    • numpy.from_dlpack has been added to allow easy exchange of data using the DLPack protocol. It accepts Python objects that implement the __dlpack__ and __dlpack_device__ methods and returns a ndarray object which is generally the view of the data of the input object.

      (gh-21145)

    Deprecations

    • Setting __array_finalize__ to None is deprecated. It must now be a method and may wish to call super().__array_finalize__(obj) after checking for None or if the NumPy version is sufficiently new.

      (gh-20766)

    • Using axis=32 (axis=np.MAXDIMS) in many cases had the same meaning as axis=None. This is deprecated and axis=None must be used instead.

      (gh-20920)

    • The hook function PyDataMem_SetEventHook has been deprecated and the demonstration of its use in tool/allocation_tracking has been removed. The ability to track allocations is now built-in to python via tracemalloc.

      (gh-20394)

    • numpy.distutils has been deprecated, as a result of distutils itself being deprecated. It will not be present in NumPy for Python >= 3.12, and will be removed completely 2 years after the release of Python 3.12 For more details, see distutils-status-migration{.interpreted-text role="ref"}.

      (gh-20875)

    Expired deprecations

    • The NpzFile.iteritems() and NpzFile.iterkeys() methods have been removed as part of the continued removal of Python 2 compatibility. This concludes the deprecation from 1.15.

      (gh-16830)

    • The alen and asscalar functions have been removed.

      (gh-20414)

    • The UPDATEIFCOPY array flag has been removed together with the enum NPY_ARRAY_UPDATEIFCOPY. The associated (and deprecated) PyArray_XDECREF_ERR was also removed. These were all deprecated in 1.14. They are replaced by WRITEBACKIFCOPY, that requires calling PyArray_ResoveWritebackIfCopy before the array is deallocated.

      (gh-20589)

    • Exceptions will be raised during array-like creation. When an object raised an exception during access of the special attributes __array__ or __array_interface__, this exception was usually ignored. This behaviour was deprecated in 1.21, and the exception will now be raised.

      (gh-20835)

    • Multidimensional indexing with non-tuple values is not allowed. Previously, code such as arr[ind] where ind = [[0, 1], [0, 1]] produced a FutureWarning and was interpreted as a multidimensional index (i.e., arr[tuple(ind)]). Now this example is treated like an array index over a single dimension (arr[array(ind)]). Multidimensional indexing with anything but a tuple was deprecated in NumPy 1.15.

      (gh-21029)

    • Changing to a dtype of different size in F-contiguous arrays is no longer permitted. Deprecated since Numpy 1.11.0. See below for an extended explanation of the effects of this change.

      (gh-20722)

    New Features

    crackfortran has support for operator and assignment overloading

    crackfortran parser now understands operator and assignment definitions in a module. They are added in the body list of the module which contains a new key implementedby listing the names of the subroutines or functions implementing the operator or assignment.

    (gh-15006)

    f2py supports reading access type attributes from derived type statements

    As a result, one does not need to use public or private statements to specify derived type access properties.

    (gh-15844)

    New parameter ndmin added to genfromtxt

    This parameter behaves the same as ndmin from numpy.loadtxt.

    (gh-20500)

    np.loadtxt now supports quote character and single converter function

    numpy.loadtxt now supports an additional quotechar keyword argument which is not set by default. Using quotechar='"' will read quoted fields as used by the Excel CSV dialect.

    Further, it is now possible to pass a single callable rather than a dictionary for the converters argument.

    (gh-20580)

    Changing to dtype of a different size now requires contiguity of only the last axis

    Previously, viewing an array with a dtype of a different item size required that the entire array be C-contiguous. This limitation would unnecessarily force the user to make contiguous copies of non-contiguous arrays before being able to change the dtype.

    This change affects not only ndarray.view, but other construction mechanisms, including the discouraged direct assignment to ndarray.dtype.

    This change expires the deprecation regarding the viewing of F-contiguous arrays, described elsewhere in the release notes.

    (gh-20722)

    Deterministic output files for F2PY

    For F77 inputs, f2py will generate modname-f2pywrappers.f unconditionally, though these may be empty. For free-form inputs, modname-f2pywrappers.f, modname-f2pywrappers2.f90 will both be generated unconditionally, and may be empty. This allows writing generic output rules in cmake or meson and other build systems. Older behavior can be restored by passing --skip-empty-wrappers to f2py. f2py-meson{.interpreted-text role="ref"} details usage.

    (gh-21187)

    keepdims parameter for average

    The parameter keepdims was added to the functions numpy.average and numpy.ma.average. The parameter has the same meaning as it does in reduction functions such as numpy.sum or numpy.mean.

    (gh-21485)

    Compatibility notes

    1D np.linalg.norm preserves float input types, even for scalar results

    Previously, this would promote to float64 when the ord argument was not one of the explicitly listed values, e.g. ord=3:

    >>> f32 = np.float32([1, 2])
    >>> np.linalg.norm(f32, 2).dtype
    dtype('float32')
    >>> np.linalg.norm(f32, 3)
    dtype('float64')  # numpy 1.22
    dtype('float32')  # numpy 1.23
    

    This change affects only float32 and float16 vectors with ord other than -Inf, 0, 1, 2, and Inf.

    (gh-17709)

    Changes to structured (void) dtype promotion and comparisons

    In general, NumPy now defines correct, but slightly limited, promotion for structured dtypes by promoting the subtypes of each field instead of raising an exception:

    >>> np.result_type(np.dtype("i,i"), np.dtype("i,d"))
    dtype([('f0', '<i4'), ('f1', '<f8')])
    

    For promotion matching field names, order, and titles are enforced, however padding is ignored. Promotion involving structured dtypes now always ensures native byte-order for all fields (which may change the result of np.concatenate) and ensures that the result will be "packed", i.e. all fields are ordered contiguously and padding is removed. See structured_dtype_comparison_and_promotion{.interpreted-text role="ref"} for further details.

    The repr of aligned structures will now never print the long form including offsets and itemsize unless the structure includes padding not guaranteed by align=True.

    In alignment with the above changes to the promotion logic, the casting safety has been updated:

    • "equiv" enforces matching names and titles. The itemsize is allowed to differ due to padding.
    • "safe" allows mismatching field names and titles
    • The cast safety is limited by the cast safety of each included field.
    • The order of fields is used to decide cast safety of each individual field. Previously, the field names were used and only unsafe casts were possible when names mismatched.

    The main important change here is that name mismatches are now considered "safe" casts.

    (gh-19226)

    NPY_RELAXED_STRIDES_CHECKING has been removed

    NumPy cannot be compiled with NPY_RELAXED_STRIDES_CHECKING=0 anymore. Relaxed strides have been the default for many years and the option was initially introduced to allow a smoother transition.

    (gh-20220)

    np.loadtxt has recieved several changes

    The row counting of numpy.loadtxt was fixed. loadtxt ignores fully empty lines in the file, but counted them towards max_rows. When max_rows is used and the file contains empty lines, these will now not be counted. Previously, it was possible that the result contained fewer than max_rows rows even though more data was available to be read. If the old behaviour is required, itertools.islice may be used:

    import itertools
    lines = itertools.islice(open("file"), 0, max_rows)
    result = np.loadtxt(lines, ...)
    

    While generally much faster and improved, numpy.loadtxt may now fail to converter certain strings to numbers that were previously successfully read. The most important cases for this are:

    • Parsing floating point values such as 1.0 into integers will now fail
    • Parsing hexadecimal floats such as 0x3p3 will fail
    • An _ was previously accepted as a thousands delimiter 100_000. This will now result in an error.

    If you experience these limitations, they can all be worked around by passing appropriate converters=. NumPy now supports passing a single converter to be used for all columns to make this more convenient. For example, converters=float.fromhex can read hexadecimal float numbers and converters=int will be able to read 100_000.

    Further, the error messages have been generally improved. However, this means that error types may differ. In particularly, a ValueError is now always raised when parsing of a single entry fails.

    (gh-20580)

    Improvements

    ndarray.__array_finalize__ is now callable

    This means subclasses can now use super().__array_finalize__(obj) without worrying whether ndarray is their superclass or not. The actual call remains a no-op.

    (gh-20766)

    Add support for VSX4/Power10

    With VSX4/Power10 enablement, the new instructions available in Power ISA 3.1 can be used to accelerate some NumPy operations, e.g., floor_divide, modulo, etc.

    (gh-20821)

    np.fromiter now accepts objects and subarrays

    The numpy.fromiter function now supports object and subarray dtypes. Please see he function documentation for examples.

    (gh-20993)

    Math C library feature detection now uses correct signatures

    Compiling is preceded by a detection phase to determine whether the underlying libc supports certain math operations. Previously this code did not respect the proper signatures. Fixing this enables compilation for the wasm-ld backend (compilation for web assembly) and reduces the number of warnings.

    (gh-21154)

    np.kron now maintains subclass information

    np.kron maintains subclass information now such as masked arrays while computing the Kronecker product of the inputs

    >>> x = ma.array([[1, 2], [3, 4]], mask=[[0, 1], [1, 0]])
    >>> np.kron(x,x)
    masked_array(
      data=[[1, --, --, --],
            [--, 4, --, --],
            [--, --, 4, --],
            [--, --, --, 16]],
      mask=[[False,  True,  True,  True],
            [ True, False,  True,  True],
            [ True,  True, False,  True],
            [ True,  True,  True, False]],
      fill_value=999999)
    

    :warning: Warning, np.kron output now follows ufunc ordering (multiply) to determine the output class type

    >>> class myarr(np.ndarray):
    >>>    __array_priority__ = -1
    >>> a = np.ones([2, 2])
    >>> ma = myarray(a.shape, a.dtype, a.data)
    >>> type(np.kron(a, ma)) == np.ndarray
    False # Before it was True
    >>> type(np.kron(a, ma)) == myarr
    True
    

    (gh-21262)

    Performance improvements and changes

    Faster np.loadtxt

    numpy.loadtxt is now generally much faster than previously as most of it is now implemented in C.

    (gh-20580)

    Faster reduction operators

    Reduction operations like numpy.sum, numpy.prod, numpy.add.reduce, numpy.logical_and.reduce on contiguous integer-based arrays are now much faster.

    (gh-21001)

    Faster np.where

    numpy.where is now much faster than previously on unpredictable/random input data.

    (gh-21130)

    Faster operations on NumPy scalars

    Many operations on NumPy scalars are now significantly faster, although rare operations (e.g. with 0-D arrays rather than scalars) may be slower in some cases. However, even with these improvements users who want the best performance for their scalars, may want to convert a known NumPy scalar into a Python one using scalar.item().

    (gh-21188)

    Faster np.kron

    numpy.kron is about 80% faster as the product is now computed using broadcasting.

    (gh-21354)

    Checksums

    MD5

    e82b403f04ff9696804199b727c76a16  numpy-1.23.0rc2-cp310-cp310-macosx_10_9_x86_64.whl
    8c54a8d758645f3cc4cd38d3e8749b53  numpy-1.23.0rc2-cp310-cp310-macosx_11_0_arm64.whl
    9cb69a99ecc262a0618d1022abefddf3  numpy-1.23.0rc2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    fdc8f769f9d7f49621810dd6e93c4b7b  numpy-1.23.0rc2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b4e4780b9893cafb7fdf9e77a917621a  numpy-1.23.0rc2-cp310-cp310-win32.whl
    72522edc1356681cb2282c0ab846e185  numpy-1.23.0rc2-cp310-cp310-win_amd64.whl
    e41ddd480f1a4df9fbd19613e8fe0279  numpy-1.23.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
    c072a129bed27a890f40fe4ae92c85d1  numpy-1.23.0rc2-cp38-cp38-macosx_11_0_arm64.whl
    3403871b2b11afb71e157da8b5e77bde  numpy-1.23.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    4bfc243c9d418c3012790c916821b1a1  numpy-1.23.0rc2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    71da5294cd1c7787c502b5dd3868e810  numpy-1.23.0rc2-cp38-cp38-win32.whl
    82050d9ffdd0c949bdbb431cadd1e594  numpy-1.23.0rc2-cp38-cp38-win_amd64.whl
    ba5b01751b659d1d7db38ebd98c43230  numpy-1.23.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
    3f135b3b0e0bb45739c422c3a7eaf71d  numpy-1.23.0rc2-cp39-cp39-macosx_11_0_arm64.whl
    d4c2891a953d0bbc746aaaf21e3b39b2  numpy-1.23.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    cd9afa01451169e5b09037db846948fb  numpy-1.23.0rc2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    e58528377aabfde966bb965fc4df24d3  numpy-1.23.0rc2-cp39-cp39-win32.whl
    b07488787ebc63d8ba7885625231f14a  numpy-1.23.0rc2-cp39-cp39-win_amd64.whl
    11c6aa572a7337e0245043bd7e442db1  numpy-1.23.0rc2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    9ab414aa7e01e45faf2e28c7312d16e6  numpy-1.23.0rc2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    d1f5b0c80a9eea0b57df5a5b03d2a981  numpy-1.23.0rc2-pp38-pypy38_pp73-win_amd64.whl
    00884782fc17920a470641ae5c19ad31  numpy-1.23.0rc2.tar.gz
    

    SHA256

    2e66decdea13ae8091ba480209dd5ce31261fa3b021ec06b30bd2f4a304861b7  numpy-1.23.0rc2-cp310-cp310-macosx_10_9_x86_64.whl
    fde47931544086a648b12ee7c9ccf30edd6c6db776005fb07e4a019a04980042  numpy-1.23.0rc2-cp310-cp310-macosx_11_0_arm64.whl
    c308afc8ec782badd073999385a6c93c27ee68e6c0991697394d4fd56566af1f  numpy-1.23.0rc2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    1f22f6f3cb7094ad77c8d352e4bfd2c1db1c38bc08d0b6c74e9b46343c53b052  numpy-1.23.0rc2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    279dce16b143bc50d49bab52dc279d6ab5b0edc7f4d2cc7edaf6a547586bda7e  numpy-1.23.0rc2-cp310-cp310-win32.whl
    04e4dbe6b777e977813e7ff5f43aa030ef4f6f75cbc1a4504d3135942b5c12fe  numpy-1.23.0rc2-cp310-cp310-win_amd64.whl
    9793feff4758c68502f7652fab08e5ec427d9973d26014767cc15c1b1d885f56  numpy-1.23.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
    804293d9bdf33f9c9fb0b4a753f9e84114bb0ad538d184fc579b30782326c827  numpy-1.23.0rc2-cp38-cp38-macosx_11_0_arm64.whl
    c335800064f04e0b474b64779ab234ae23c0a5b2f5a06284bb07d297d73692bd  numpy-1.23.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    9810b840a751b6f0c73c21fb2a50e306d7d0be4114cded4c7d069e142ce488cf  numpy-1.23.0rc2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    dbc987d14f46ae4c476068543d3ad2a20e7ebcb06b211eb4292224dc136eb01d  numpy-1.23.0rc2-cp38-cp38-win32.whl
    020218fc82390f1d537cb193d6f1449a919ec97df69b5a64c0a1d017486e0032  numpy-1.23.0rc2-cp38-cp38-win_amd64.whl
    785d6520f7bf10ff188762bc460579d6a31c11f960976b2a29efc383b0346572  numpy-1.23.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
    ae7e8801b93124a6b0becedc06285ddbaca2daab2d30e35ea413d3bec252717a  numpy-1.23.0rc2-cp39-cp39-macosx_11_0_arm64.whl
    1c881827ff0ad7d607047c19a075a7d7c7125cc103fb969a9200bad26175fb9d  numpy-1.23.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    6fbd492bead87ab83240c56b3490ac301595ab1399ace3e3c1b7c130e3529358  numpy-1.23.0rc2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    82e69890c394a4e1cbcaf12b47d8477bbac4635866fc46a77670abbe4bb4085d  numpy-1.23.0rc2-cp39-cp39-win32.whl
    f5a1c7c45ff29db501f9e38a360aedd833e355c14c75155ba2bd46ee3799e30a  numpy-1.23.0rc2-cp39-cp39-win_amd64.whl
    b7be00b0a76384490845395714e62f597e64bc6dc8f8a14be0e96034dde3667c  numpy-1.23.0rc2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    d17f7feb2cca596daa4b3dae86b611a13e9ace061e6583a8db21841f529ca891  numpy-1.23.0rc2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    548f4d86aa259a448f2da0c07df070bf1f71b68c1f84b1356d4a2ed832598758  numpy-1.23.0rc2-pp38-pypy38_pp73-win_amd64.whl
    8e8a88657c028b8b77f3df6f266a5e6ffb4419cbc3dfb525cbbb80ba710f5da2  numpy-1.23.0rc2.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.23.0-changelog.rst(52.07 KB)
    numpy-1.23.0rc2.tar.gz(10.21 MB)
    README.rst(20.28 KB)
  • v1.23.0rc1(May 27, 2022)

    NumPy 1.23.0 Release Notes

    The NumPy 1.23.0 release continues the ongoing work to improve the handling and promotion of dtypes, increase the execution speed, clarify the documentation, and expire old deprecations. The highlights are:

    • Implementation of loadtxt in C, greatly improving its performance.
    • Exposing DLPack at the Python level for easy data exchange.
    • Changes to the promotion and comparisons of structured dtypes.
    • Improvements to f2py.

    See below for the details,

    New functions

    • A masked array specialization of ndenumerate is now available as numpy.ma.ndenumerate. It provides an alternative to numpy.ndenumerate and skips masked values by default.

      (gh-20020)

    • numpy.from_dlpack has been added to allow easy exchange of data using the DLPack protocol. It accepts Python objects that implement the __dlpack__ and __dlpack_device__ methods and returns a ndarray object which is generally the view of the data of the input object.

      (gh-21145)

    Deprecations

    • Setting __array_finalize__ to None is deprecated. It must now be a method and may wish to call super().__array_finalize__(obj) after checking for None or if the NumPy version is sufficiently new.

      (gh-20766)

    • Using axis=32 (axis=np.MAXDIMS) in many cases had the same meaning as axis=None. This is deprecated and axis=None must be used instead.

      (gh-20920)

    • The hook function PyDataMem_SetEventHook has been deprecated and the demonstration of its use in tool/allocation_tracking has been removed. The ability to track allocations is now built-in to python via tracemalloc.

      (gh-20394)

    • numpy.distutils has been deprecated, as a result of distutils itself being deprecated. It will not be present in NumPy for Python >= 3.12, and will be removed completely 2 years after the release of Python 3.12 For more details, see distutils-status-migration{.interpreted-text role="ref"}.

      (gh-20875)

    Expired deprecations

    • The NpzFile.iteritems() and NpzFile.iterkeys() methods have been removed as part of the continued removal of Python 2 compatibility. This concludes the deprecation from 1.15.

      (gh-16830)

    • The alen and asscalar functions have been removed.

      (gh-20414)

    • The UPDATEIFCOPY array flag has been removed together with the enum NPY_ARRAY_UPDATEIFCOPY. The associated (and deprecated) PyArray_XDECREF_ERR was also removed. These were all deprecated in 1.14. They are replaced by WRITEBACKIFCOPY, that requires calling PyArray_ResoveWritebackIfCopy before the array is deallocated.

      (gh-20589)

    • Exceptions will be raised during array-like creation. When an object raised an exception during access of the special attributes __array__ or __array_interface__, this exception was usually ignored. This behaviour was deprecated in 1.21, and the exception will now be raised.

      (gh-20835)

    • Multidimensional indexing with non-tuple values is not allowed. Previously, code such as arr[ind] where ind = [[0, 1], [0, 1]] produced a FutureWarning and was interpreted as a multidimensional index (i.e., arr[tuple(ind)]). Now this example is treated like an array index over a single dimension (arr[array(ind)]). Multidimensional indexing with anything but a tuple was deprecated in NumPy 1.15.

      (gh-21029)

    • Changing to a dtype of different size in F-contiguous arrays is no longer permitted. Deprecated since Numpy 1.11.0. See below for an extended explanation of the effects of this change.

      (gh-20722)

    New Features

    crackfortran has support for operator and assignment overloading

    crackfortran parser now understands operator and assignment definitions in a module. They are added in the body list of the module which contains a new key implementedby listing the names of the subroutines or functions implementing the operator or assignment.

    (gh-15006)

    f2py supports reading access type attributes from derived type statements

    As a result, one does not need to use public or private statements to specify derived type access properties.

    (gh-15844)

    New parameter ndmin added to genfromtxt

    This parameter behaves the same as ndmin from numpy.loadtxt.

    (gh-20500)

    np.loadtxt now supports quote character and single converter function

    numpy.loadtxt now supports an additional quotechar keyword argument which is not set by default. Using quotechar='"' will read quoted fields as used by the Excel CSV dialect.

    Further, it is now possible to pass a single callable rather than a dictionary for the converters argument.

    (gh-20580)

    Changing to dtype of a different size now requires contiguity of only the last axis

    Previously, viewing an array with a dtype of a different item size required that the entire array be C-contiguous. This limitation would unnecessarily force the user to make contiguous copies of non-contiguous arrays before being able to change the dtype.

    This change affects not only ndarray.view, but other construction mechanisms, including the discouraged direct assignment to ndarray.dtype.

    This change expires the deprecation regarding the viewing of F-contiguous arrays, described elsewhere in the release notes.

    (gh-20722)

    Deterministic output files for F2PY

    For F77 inputs, f2py will generate modname-f2pywrappers.f unconditionally, though these may be empty. For free-form inputs, modname-f2pywrappers.f, modname-f2pywrappers2.f90 will both be generated unconditionally, and may be empty. This allows writing generic output rules in cmake or meson and other build systems. Older behavior can be restored by passing --skip-empty-wrappers to f2py. f2py-meson{.interpreted-text role="ref"} details usage.

    (gh-21187)

    keepdims parameter for average

    The parameter keepdims was added to the functions numpy.average and numpy.ma.average. The parameter has the same meaning as it does in reduction functions such as numpy.sum or numpy.mean.

    (gh-21485)

    Compatibility notes

    1D np.linalg.norm preserves float input types, even for scalar results

    Previously, this would promote to float64 when the ord argument was not one of the explicitly listed values, e.g. ord=3:

    >>> f32 = np.float32([1, 2])
    >>> np.linalg.norm(f32, 2).dtype
    dtype('float32')
    >>> np.linalg.norm(f32, 3)
    dtype('float64')  # numpy 1.22
    dtype('float32')  # numpy 1.23
    

    This change affects only float32 and float16 vectors with ord other than -Inf, 0, 1, 2, and Inf.

    (gh-17709)

    Changes to structured (void) dtype promotion and comparisons

    In general, NumPy now defines correct, but slightly limited, promotion for structured dtypes by promoting the subtypes of each field instead of raising an exception:

    >>> np.result_type(np.dtype("i,i"), np.dtype("i,d"))
    dtype([('f0', '<i4'), ('f1', '<f8')])
    

    For promotion matching field names, order, and titles are enforced, however padding is ignored. Promotion involving structured dtypes now always ensures native byte-order for all fields (which may change the result of np.concatenate) and ensures that the result will be "packed", i.e. all fields are ordered contiguously and padding is removed. See structured_dtype_comparison_and_promotion{.interpreted-text role="ref"} for further details.

    The repr of aligned structures will now never print the long form including offsets and itemsize unless the structure includes padding not guaranteed by align=True.

    In alignment with the above changes to the promotion logic, the casting safety has been updated:

    • "equiv" enforces matching names and titles. The itemsize is allowed to differ due to padding.
    • "safe" allows mismatching field names and titles
    • The cast safety is limited by the cast safety of each included field.
    • The order of fields is used to decide cast safety of each individual field. Previously, the field names were used and only unsafe casts were possible when names mismatched.

    The main important change here is that name mismatches are now considered "safe" casts.

    (gh-19226)

    NPY_RELAXED_STRIDES_CHECKING has been removed

    NumPy cannot be compiled with NPY_RELAXED_STRIDES_CHECKING=0 anymore. Relaxed strides have been the default for many years and the option was initially introduced to allow a smoother transition.

    (gh-20220)

    np.loadtxt has recieved several changes

    The row counting of numpy.loadtxt was fixed. loadtxt ignores fully empty lines in the file, but counted them towards max_rows. When max_rows is used and the file contains empty lines, these will now not be counted. Previously, it was possible that the result contained fewer than max_rows rows even though more data was available to be read. If the old behaviour is required, itertools.islice may be used:

    import itertools
    lines = itertools.islice(open("file"), 0, max_rows)
    result = np.loadtxt(lines, ...)
    

    While generally much faster and improved, numpy.loadtxt may now fail to converter certain strings to numbers that were previously successfully read. The most important cases for this are:

    • Parsing floating point values such as 1.0 into integers will now fail
    • Parsing hexadecimal floats such as 0x3p3 will fail
    • An _ was previously accepted as a thousands delimiter 100_000. This will now result in an error.

    If you experience these limitations, they can all be worked around by passing appropriate converters=. NumPy now supports passing a single converter to be used for all columns to make this more convenient. For example, converters=float.fromhex can read hexadecimal float numbers and converters=int will be able to read 100_000.

    Further, the error messages have been generally improved. However, this means that error types may differ. In particularly, a ValueError is now always raised when parsing of a single entry fails.

    (gh-20580)

    Improvements

    ndarray.__array_finalize__ is now callable

    This means subclasses can now use super().__array_finalize__(obj) without worrying whether ndarray is their superclass or not. The actual call remains a no-op.

    (gh-20766)

    Add support for VSX4/Power10

    With VSX4/Power10 enablement, the new instructions available in Power ISA 3.1 can be used to accelerate some NumPy operations, e.g., floor_divide, modulo, etc.

    (gh-20821)

    np.fromiter now accepts objects and subarrays

    The numpy.fromiter function now supports object and subarray dtypes. Please see he function documentation for examples.

    (gh-20993)

    Math C library feature detection now uses correct signatures

    Compiling is preceded by a detection phase to determine whether the underlying libc supports certain math operations. Previously this code did not respect the proper signatures. Fixing this enables compilation for the wasm-ld backend (compilation for web assembly) and reduces the number of warnings.

    (gh-21154)

    np.kron now maintains subclass information

    np.kron maintains subclass information now such as masked arrays while computing the Kronecker product of the inputs

    >>> x = ma.array([[1, 2], [3, 4]], mask=[[0, 1], [1, 0]])
    >>> np.kron(x,x)
    masked_array(
      data=[[1, --, --, --],
            [--, 4, --, --],
            [--, --, 4, --],
            [--, --, --, 16]],
      mask=[[False,  True,  True,  True],
            [ True, False,  True,  True],
            [ True,  True, False,  True],
            [ True,  True,  True, False]],
      fill_value=999999)
    

    :warning: Warning, np.kron output now follows ufunc ordering (multiply) to determine the output class type

    >>> class myarr(np.ndarray):
    >>>    __array_priority__ = -1
    >>> a = np.ones([2, 2])
    >>> ma = myarray(a.shape, a.dtype, a.data)
    >>> type(np.kron(a, ma)) == np.ndarray
    False # Before it was True
    >>> type(np.kron(a, ma)) == myarr
    True
    

    (gh-21262)

    Performance improvements and changes

    Faster np.loadtxt

    numpy.loadtxt is now generally much faster than previously as most of it is now implemented in C.

    (gh-20580)

    Faster reduction operators

    Reduction operations like numpy.sum, numpy.prod, numpy.add.reduce, numpy.logical_and.reduce on contiguous integer-based arrays are now much faster.

    (gh-21001)

    Faster np.where

    numpy.where is now much faster than previously on unpredictable/random input data.

    (gh-21130)

    Faster operations on NumPy scalars

    Many operations on NumPy scalars are now significantly faster, although rare operations (e.g. with 0-D arrays rather than scalars) may be slower in some cases. However, even with these improvements users who want the best performance for their scalars, may want to convert a known NumPy scalar into a Python one using scalar.item().

    (gh-21188)

    Faster np.kron

    numpy.kron is about 80% faster as the product is now computed using broadcasting.

    (gh-21354)

    Checksums

    MD5

    c67b4cc1de8a0753bc65765a508aa0e3  numpy-1.23.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
    9daceb162c46298986b5fceb13f10e54  numpy-1.23.0rc1-cp310-cp310-macosx_11_0_arm64.whl
    ac07046b70001710d8d3243d9b5d0389  numpy-1.23.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    14269d197cd6aac02655d43aa10ba108  numpy-1.23.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ba5fc5cd776549afc353e0043f6c6f5a  numpy-1.23.0rc1-cp310-cp310-win32.whl
    0e1b00f156f32aabde1e29607c709a24  numpy-1.23.0rc1-cp310-cp310-win_amd64.whl
    34b5a9f3abeb9f6e9c6fbd494305d53d  numpy-1.23.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
    bb825cf372822daad1e440577e324042  numpy-1.23.0rc1-cp38-cp38-macosx_11_0_arm64.whl
    45296e6b41691c4265c90562c94254aa  numpy-1.23.0rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    b10b131e5c0576629ab99829301d6fba  numpy-1.23.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    bc6210254087b73715d8c6a79dafa3b8  numpy-1.23.0rc1-cp38-cp38-win32.whl
    d9b7fb5a539a738309a717051f13e41a  numpy-1.23.0rc1-cp38-cp38-win_amd64.whl
    d2cec33489c96dfc489bb00353d351fe  numpy-1.23.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
    e4982f3bf3d4acab67cb61d3d0e2f85b  numpy-1.23.0rc1-cp39-cp39-macosx_11_0_arm64.whl
    781a79ea9f1683a579a1ef27d809a8e0  numpy-1.23.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8c03ea50c2baa172e8252d10dea73498  numpy-1.23.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    61829dec0785cf72b8f5bc92dc44d828  numpy-1.23.0rc1-cp39-cp39-win32.whl
    94c7c971ed5eedb1b61a09bcfc123617  numpy-1.23.0rc1-cp39-cp39-win_amd64.whl
    b5c6f674b468e7fc513882563391efec  numpy-1.23.0rc1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    41ab4b757478c8e244018c37bcb52bb3  numpy-1.23.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f2082734772a6a7afbe3568e7b2ad458  numpy-1.23.0rc1-pp38-pypy38_pp73-win_amd64.whl
    faf6a08cda5696b96acb670c433495e5  numpy-1.23.0rc1.tar.gz
    

    SHA256

    a72607e12891615a314a892f8d21301b930f211841f0084d269baa1eb31710b4  numpy-1.23.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
    4784a81089c75a941dcc013b09290dfb22768780a1f3525667328d09a3338116  numpy-1.23.0rc1-cp310-cp310-macosx_11_0_arm64.whl
    d4ebdeb0e2a57bbd28c3258a562ee011775127427eea833613744af1a66c3e11  numpy-1.23.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a2dfb54cb1c6470918a3c02da77706f28977cb7eac4b76cc40b14942c8634615  numpy-1.23.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    1567c488f9ef97341c5937b4140a45ac37e0592c43ba2c59d3e49ff7d5da90b0  numpy-1.23.0rc1-cp310-cp310-win32.whl
    78df1fc2ddf543508b5358dd24ac68ee693599e5df0d136062b9ec21ba7643cf  numpy-1.23.0rc1-cp310-cp310-win_amd64.whl
    020c6d8476fced48f42629f46996af8a07bc725cb821081205c4422eacaa2283  numpy-1.23.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
    efd26eecd1ada0c8dadc5b221c52086ccc72e4cb0707e451889ef3b62c14163c  numpy-1.23.0rc1-cp38-cp38-macosx_11_0_arm64.whl
    8cf3f61984777a830eef452d8b04338795691949214e6cafc46c5236900cd1f5  numpy-1.23.0rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    96738ae39db010502564325ce2f4aff4f42b75adf64f3ccb2b19214e9be1c01c  numpy-1.23.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    33b233f59d9430a27c2a58a056f32259eadf9584f41c6ec02c493c3aeb90f844  numpy-1.23.0rc1-cp38-cp38-win32.whl
    edf0a82d285e18418e3915fece2cf0f4f31e84fe62271331fbaafbbc7d57e9ee  numpy-1.23.0rc1-cp38-cp38-win_amd64.whl
    a71f1602bf84d0a2fb5d586a2d8c31f29fbca9253ae1eecf46b7059fa265eb79  numpy-1.23.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
    05000d27fd135dd0aab90acaf96652991c070dda688739097ac2dea92189f9f0  numpy-1.23.0rc1-cp39-cp39-macosx_11_0_arm64.whl
    ebe07758ac3e7402290f43d379f6d79d81a247488561743490cf2e5b64351ba6  numpy-1.23.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    3cd05784cdcd09114c2f6186bb99af7f5ee65ffd720dae9990722a94309b17ea  numpy-1.23.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    6ccb79435d4501b35ed3d807e1bf7345e42f68b25fbf720ade9c74c7196360f9  numpy-1.23.0rc1-cp39-cp39-win32.whl
    a8fbe61e09565fa2f7bca076627ea0efbf50ab689c35af5082c5d94fb24b30ee  numpy-1.23.0rc1-cp39-cp39-win_amd64.whl
    7a45352476e92c1958ce513fa84b508d59dd8e6ffe0e6f6cceebfc0f3c06d086  numpy-1.23.0rc1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
    4f15768493ecf23c5d82e5542642a36764e551c7744781268c7c221f26c7ffd6  numpy-1.23.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    edf0b720c8ba3d35b23c71c0cd13df34290be87b42f0e10d0ec2f1639cda2692  numpy-1.23.0rc1-pp38-pypy38_pp73-win_amd64.whl
    3a09d0f564f59b6da54f592909d3fdbd50b492ef9fbe6d699043c992538ba0e0  numpy-1.23.0rc1.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    1.23.0-release.rst(51.52 KB)
    numpy-1.23.0rc1.tar.gz(10.21 MB)
    README.rst(20.28 KB)
  • v1.22.4(May 20, 2022)

    NumPy 1.22.4 Release Notes

    NumPy 1.22.4 is a maintenance release that fixes bugs discovered after the 1.22.3 release. In addition, the wheels for this release are built using the recently released Cython 0.29.30, which should fix the reported problems with debugging.

    The Python versions supported for this release are 3.8-3.10. Note that the Mac wheels are now based on OS X 10.15 rather than 10.6 that was used in previous NumPy release cycles.

    Contributors

    A total of 12 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Alexander Shadchin
    • Bas van Beek
    • Charles Harris
    • Hood Chatham
    • Jarrod Millman
    • John-Mark Gurney +
    • Junyan Ou +
    • Mariusz Felisiak +
    • Ross Barnowski
    • Sebastian Berg
    • Serge Guelton
    • Stefan van der Walt

    Pull requests merged

    A total of 22 pull requests were merged for this release.

    • #21191: TYP, BUG: Fix np.lib.stride_tricks re-exported under the...
    • #21192: TST: Bump mypy from 0.931 to 0.940
    • #21243: MAINT: Explicitly re-export the types in numpy._typing
    • #21245: MAINT: Specify sphinx, numpydoc versions for CI doc builds
    • #21275: BUG: Fix typos
    • #21277: ENH, BLD: Fix math feature detection for wasm
    • #21350: MAINT: Fix failing simd and cygwin tests.
    • #21438: MAINT: Fix failing Python 3.8 32-bit Windows test.
    • #21444: BUG: add linux guard per #21386
    • #21445: BUG: Allow legacy dtypes to cast to datetime again
    • #21446: BUG: Make mmap handling safer in frombuffer
    • #21447: BUG: Stop using PyBytesObject.ob_shash deprecated in Python 3.11.
    • #21448: ENH: Introduce numpy.core.setup_common.NPY_CXX_FLAGS
    • #21472: BUG: Ensure compile errors are raised correclty
    • #21473: BUG: Fix segmentation fault
    • #21474: MAINT: Update doc requirements
    • #21475: MAINT: Mark npy_memchr with no_sanitize("alignment") on clang
    • #21512: DOC: Proposal - make the doc landing page cards more similar...
    • #21525: MAINT: Update Cython version to 0.29.30.
    • #21536: BUG: Fix GCC error during build configuration
    • #21541: REL: Prepare for the NumPy 1.22.4 release.
    • #21547: MAINT: Skip tests that fail on PyPy.

    Checksums

    MD5

    a19351fd3dc0b3bbc733495ed18b8f24  numpy-1.22.4-cp310-cp310-macosx_10_14_x86_64.whl
    0730f9e196f70ad89f246bf95ccf05d5  numpy-1.22.4-cp310-cp310-macosx_10_15_x86_64.whl
    63c74e5395a2b31d8adc5b1aa0c62471  numpy-1.22.4-cp310-cp310-macosx_11_0_arm64.whl
    f99778023770c12f896768c90f7712e5  numpy-1.22.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    757d68b0cdb4e28ffce8574b6a2f3c5e  numpy-1.22.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    50becf2e048e54dc5227dfe8378aae1e  numpy-1.22.4-cp310-cp310-win32.whl
    79dfdc29a4730e44d6df33dbea5b35b0  numpy-1.22.4-cp310-cp310-win_amd64.whl
    8fd8f04d71ead55c2773d1b46668ca67  numpy-1.22.4-cp38-cp38-macosx_10_15_x86_64.whl
    41a7c6240081010824cc0d5c02900fe6  numpy-1.22.4-cp38-cp38-macosx_11_0_arm64.whl
    6bc066d3f61da3304c82d92f3f900a4f  numpy-1.22.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    86d959605c66ccba11c6504f25fff0d7  numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ae0405894c065349a511e4575b919e2a  numpy-1.22.4-cp38-cp38-win32.whl
    c9a731d08081396b7a1b66977734d2ac  numpy-1.22.4-cp38-cp38-win_amd64.whl
    4d9b97d74799e5fc48860f0b4a3b255a  numpy-1.22.4-cp39-cp39-macosx_10_14_x86_64.whl
    c99fa7e04cb7cc23f1713f2023b4e489  numpy-1.22.4-cp39-cp39-macosx_10_15_x86_64.whl
    dda3815df12b8a99c6c3069f69997521  numpy-1.22.4-cp39-cp39-macosx_11_0_arm64.whl
    9b7c5b39d5611d92b66eb545d44b25db  numpy-1.22.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    90fc45eaf8b8c4fac3f3ebd105a5a856  numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    9562153d4a83d773c20eb626cbd65cde  numpy-1.22.4-cp39-cp39-win32.whl
    711b23acce54a18ce74fc80f48f48062  numpy-1.22.4-cp39-cp39-win_amd64.whl
    ab803b24ea557452e828adba1b986af3  numpy-1.22.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    09b3a41ea0b9bc20bd1691cf88f0b0d3  numpy-1.22.4.tar.gz
    b44849506fbb54cdef9dbb435b2b1987  numpy-1.22.4.zip
    

    SHA256

    ba9ead61dfb5d971d77b6c131a9dbee62294a932bf6a356e48c75ae684e635b3  numpy-1.22.4-cp310-cp310-macosx_10_14_x86_64.whl
    1ce7ab2053e36c0a71e7a13a7475bd3b1f54750b4b433adc96313e127b870887  numpy-1.22.4-cp310-cp310-macosx_10_15_x86_64.whl
    7228ad13744f63575b3a972d7ee4fd61815b2879998e70930d4ccf9ec721dce0  numpy-1.22.4-cp310-cp310-macosx_11_0_arm64.whl
    43a8ca7391b626b4c4fe20aefe79fec683279e31e7c79716863b4b25021e0e74  numpy-1.22.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a911e317e8c826ea632205e63ed8507e0dc877dcdc49744584dfc363df9ca08c  numpy-1.22.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    9ce7df0abeabe7fbd8ccbf343dc0db72f68549856b863ae3dd580255d009648e  numpy-1.22.4-cp310-cp310-win32.whl
    3e1ffa4748168e1cc8d3cde93f006fe92b5421396221a02f2274aab6ac83b077  numpy-1.22.4-cp310-cp310-win_amd64.whl
    59d55e634968b8f77d3fd674a3cf0b96e85147cd6556ec64ade018f27e9479e1  numpy-1.22.4-cp38-cp38-macosx_10_15_x86_64.whl
    c1d937820db6e43bec43e8d016b9b3165dcb42892ea9f106c70fb13d430ffe72  numpy-1.22.4-cp38-cp38-macosx_11_0_arm64.whl
    d4c5d5eb2ec8da0b4f50c9a843393971f31f1d60be87e0fb0917a49133d257d6  numpy-1.22.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    64f56fc53a2d18b1924abd15745e30d82a5782b2cab3429aceecc6875bd5add0  numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    fb7a980c81dd932381f8228a426df8aeb70d59bbcda2af075b627bbc50207cba  numpy-1.22.4-cp38-cp38-win32.whl
    e96d7f3096a36c8754207ab89d4b3282ba7b49ea140e4973591852c77d09eb76  numpy-1.22.4-cp38-cp38-win_amd64.whl
    4c6036521f11a731ce0648f10c18ae66d7143865f19f7299943c985cdc95afb5  numpy-1.22.4-cp39-cp39-macosx_10_14_x86_64.whl
    b89bf9b94b3d624e7bb480344e91f68c1c6c75f026ed6755955117de00917a7c  numpy-1.22.4-cp39-cp39-macosx_10_15_x86_64.whl
    2d487e06ecbf1dc2f18e7efce82ded4f705f4bd0cd02677ffccfb39e5c284c7e  numpy-1.22.4-cp39-cp39-macosx_11_0_arm64.whl
    f3eb268dbd5cfaffd9448113539e44e2dd1c5ca9ce25576f7c04a5453edc26fa  numpy-1.22.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    37431a77ceb9307c28382c9773da9f306435135fae6b80b62a11c53cfedd8802  numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    cc7f00008eb7d3f2489fca6f334ec19ca63e31371be28fd5dad955b16ec285bd  numpy-1.22.4-cp39-cp39-win32.whl
    f0725df166cf4785c0bc4cbfb320203182b1ecd30fee6e541c8752a92df6aa32  numpy-1.22.4-cp39-cp39-win_amd64.whl
    0791fbd1e43bf74b3502133207e378901272f3c156c4df4954cad833b1380207  numpy-1.22.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b4308198d0e41efaa108e57d69973398439c7299a9d551680cdd603cf6d20709  numpy-1.22.4.tar.gz
    425b390e4619f58d8526b3dcf656dde069133ae5c240229821f01b5f44ea07af  numpy-1.22.4.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.22.4-changelog.rst(2.70 KB)
    numpy-1.22.4.tar.gz(10.05 MB)
    numpy-1.22.4.zip(10.92 MB)
    README.rst(8.00 KB)
  • v1.21.6(Apr 12, 2022)

    NumPy 1.21.6 Release Notes

    NumPy 1.21.6 is a very small release that achieves two things:

    • Backs out the mistaken backport of C++ code into 1.21.5.
    • Provides a 32 bit Windows wheel for Python 3.10.

    The provision of the 32 bit wheel is intended to make life easier for oldest-supported-numpy.

    Checksums

    MD5

    5a3e5d7298056bcfbc3246597af474d4  numpy-1.21.6-cp310-cp310-macosx_10_9_universal2.whl
    d981d2859842e7b62dc93e24808c7bac  numpy-1.21.6-cp310-cp310-macosx_10_9_x86_64.whl
    171313893c26529404d09fadb3537ed3  numpy-1.21.6-cp310-cp310-macosx_11_0_arm64.whl
    5a7a6dfdd43069f9b29d3fe6b7f3a2ce  numpy-1.21.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a9e25375a72725c5d74442eda53af405  numpy-1.21.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    6f9a782477380b2cdb7606f6f7634c00  numpy-1.21.6-cp310-cp310-win32.whl
    32a73a348864700a3fa510d2fc4350b7  numpy-1.21.6-cp310-cp310-win_amd64.whl
    0db8941ebeb0a02cd839d9cd3c5c20bb  numpy-1.21.6-cp37-cp37m-macosx_10_9_x86_64.whl
    67882155be9592850861f4ad8ba36623  numpy-1.21.6-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    c70e30e1ff9ab49f898c19e7a6492ae6  numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    e32dbd291032c7554a742f1bb9b2f7a3  numpy-1.21.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    689bf804c2cd16cb241fd943e3833ffd  numpy-1.21.6-cp37-cp37m-win32.whl
    0062a7b0231a07cb5b9f3d7c495e6fe4  numpy-1.21.6-cp37-cp37m-win_amd64.whl
    0d08809980ab497659e7aa0df9ce120e  numpy-1.21.6-cp38-cp38-macosx_10_9_universal2.whl
    3c67d14ea2009069844b27bfbf74304d  numpy-1.21.6-cp38-cp38-macosx_10_9_x86_64.whl
    5f0e773745cb817313232ac1bf4c7eee  numpy-1.21.6-cp38-cp38-macosx_11_0_arm64.whl
    fa8011e065f1964d3eb870bb3926fc99  numpy-1.21.6-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    486cf9d4daab59aad253aa5b84a5aa83  numpy-1.21.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    88509abab303c076dfb26f00e455180d  numpy-1.21.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    f7234e2ef837f5f6ddbde8db246fd05b  numpy-1.21.6-cp38-cp38-win32.whl
    e1063e01fb44ea7a49adea0c33548217  numpy-1.21.6-cp38-cp38-win_amd64.whl
    61c4caad729e3e0e688accbc1424ed45  numpy-1.21.6-cp39-cp39-macosx_10_9_universal2.whl
    67488d8ccaeff798f2e314aae7c4c3d6  numpy-1.21.6-cp39-cp39-macosx_10_9_x86_64.whl
    128c3713b5d1de45a0f522562bac5263  numpy-1.21.6-cp39-cp39-macosx_11_0_arm64.whl
    50e79cd0610b4ed726b3bf08c3716dab  numpy-1.21.6-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    bd0c9e3c0e488faac61daf3227fb95af  numpy-1.21.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    aa5e9baf1dec16b15e481c23f8a23214  numpy-1.21.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a2405b0e5d3f775ad30177296a997092  numpy-1.21.6-cp39-cp39-win32.whl
    f0d20eda8c78f957ea70c5527954303e  numpy-1.21.6-cp39-cp39-win_amd64.whl
    9682abbcc38cccb7f56e48aacca7de23  numpy-1.21.6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    6aa3c2e8ea2886bf593bd8e0a1425c64  numpy-1.21.6.tar.gz
    04aea95dcb1d256d13a45df42173aa1e  numpy-1.21.6.zip
    

    SHA256

    8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25  numpy-1.21.6-cp310-cp310-macosx_10_9_universal2.whl
    fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e  numpy-1.21.6-cp310-cp310-macosx_10_9_x86_64.whl
    3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6  numpy-1.21.6-cp310-cp310-macosx_11_0_arm64.whl
    f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb  numpy-1.21.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1  numpy-1.21.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c  numpy-1.21.6-cp310-cp310-win32.whl
    d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f  numpy-1.21.6-cp310-cp310-win_amd64.whl
    6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7  numpy-1.21.6-cp37-cp37m-macosx_10_9_x86_64.whl
    67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46  numpy-1.21.6-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2  numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db  numpy-1.21.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e  numpy-1.21.6-cp37-cp37m-win32.whl
    bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a  numpy-1.21.6-cp37-cp37m-win_amd64.whl
    82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552  numpy-1.21.6-cp38-cp38-macosx_10_9_universal2.whl
    643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab  numpy-1.21.6-cp38-cp38-macosx_10_9_x86_64.whl
    357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3  numpy-1.21.6-cp38-cp38-macosx_11_0_arm64.whl
    9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6  numpy-1.21.6-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a  numpy-1.21.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4  numpy-1.21.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470  numpy-1.21.6-cp38-cp38-win32.whl
    bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf  numpy-1.21.6-cp38-cp38-win_amd64.whl
    4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1  numpy-1.21.6-cp39-cp39-macosx_10_9_universal2.whl
    67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673  numpy-1.21.6-cp39-cp39-macosx_10_9_x86_64.whl
    ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0  numpy-1.21.6-cp39-cp39-macosx_11_0_arm64.whl
    1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac  numpy-1.21.6-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b  numpy-1.21.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b  numpy-1.21.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786  numpy-1.21.6-cp39-cp39-win32.whl
    e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3  numpy-1.21.6-cp39-cp39-win_amd64.whl
    dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0  numpy-1.21.6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    d4efc6491a1cdc00f9eca9bf2c1aa13671776f6941c7321ddf75b45c862f0c2c  numpy-1.21.6.tar.gz
    ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656  numpy-1.21.6.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.21.6-changelog.rst(389 bytes)
    numpy-1.21.6.tar.gz(9.00 MB)
    numpy-1.21.6.zip(9.79 MB)
    README.rst(7.01 KB)
  • v1.22.3(Mar 7, 2022)

    NumPy 1.22.3 Release Notes

    NumPy 1.22.3 is a maintenance release that fixes bugs discovered after the 1.22.2 release. The most noticeable fixes may be those for DLPack. One that may cause some problems is disallowing strings as inputs to logical ufuncs. It is still undecided how strings should be treated in those functions and it was thought best to simply disallow them until a decision was reached. That should not cause problems with older code.

    The Python versions supported for this release are 3.8-3.10. Note that the Mac wheels are now based on OS X 10.14 rather than 10.9 that was used in previous NumPy release cycles. 10.14 is the oldest release supported by Apple.

    Contributors

    A total of 9 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • @GalaxySnail +
    • Alexandre de Siqueira
    • Bas van Beek
    • Charles Harris
    • Melissa Weber Mendonça
    • Ross Barnowski
    • Sebastian Berg
    • Tirth Patel
    • Matthieu Darbois

    Pull requests merged

    A total of 10 pull requests were merged for this release.

    • #21048: MAINT: Use "3.10" instead of "3.10-dev" on travis.
    • #21106: TYP,MAINT: Explicitly allow sequences of array-likes in np.concatenate
    • #21137: BLD,DOC: skip broken ipython 8.1.0
    • #21138: BUG, ENH: np._from_dlpack: export correct device information
    • #21139: BUG: Fix numba DUFuncs added loops getting picked up
    • #21140: BUG: Fix unpickling an empty ndarray with a non-zero dimension...
    • #21141: BUG: use ThreadPoolExecutor instead of ThreadPool
    • #21142: API: Disallow strings in logical ufuncs
    • #21143: MAINT, DOC: Fix SciPy intersphinx link
    • #21148: BUG,ENH: np._from_dlpack: export arrays with any strided size-1...

    Checksums

    MD5

    14f1872bbab050b0579e5fcd8b341b81  numpy-1.22.3-cp310-cp310-macosx_10_14_x86_64.whl
    c673faa3ac8745ad10ed0428a21a77aa  numpy-1.22.3-cp310-cp310-macosx_11_0_arm64.whl
    d925fff720561673fd7ee8ead0e94935  numpy-1.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    319f97f5ee26b9c3c06f7a2a3df412a3  numpy-1.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    866eae5dba934cad50eb38c8505c8449  numpy-1.22.3-cp310-cp310-win32.whl
    e4c512437a6d4eb4a384225861067ad8  numpy-1.22.3-cp310-cp310-win_amd64.whl
    a28052af37037f0d5c3b47f4a7040135  numpy-1.22.3-cp38-cp38-macosx_10_14_x86_64.whl
    d22dc074bde64f6e91a2d1990345f821  numpy-1.22.3-cp38-cp38-macosx_11_0_arm64.whl
    e8a01c2ca1474aff142366a0a2fe0812  numpy-1.22.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    4fe6e71e7871cb31ffc4122aa5707be7  numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    1273fb3c77383ab28f2fb05192751340  numpy-1.22.3-cp38-cp38-win32.whl
    001244a6bafa640d7509c85661a4e98e  numpy-1.22.3-cp38-cp38-win_amd64.whl
    b8694b880a1a68d1716f60a9c9e82b38  numpy-1.22.3-cp39-cp39-macosx_10_14_x86_64.whl
    ba122eaa0988801e250f8674e3dd612e  numpy-1.22.3-cp39-cp39-macosx_11_0_arm64.whl
    3641825aca07cb26732425e52d034daf  numpy-1.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    f92412e4273c2580abcc1b75c56e9651  numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b38604778ffd0a17931c06738c3ce9ed  numpy-1.22.3-cp39-cp39-win32.whl
    644e0b141fa36a1baf0338032254cc9a  numpy-1.22.3-cp39-cp39-win_amd64.whl
    99d2dfb943327b108b2c3b923bd42000  numpy-1.22.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    3305c27e5bdf7f19247a7eee00ac053e  numpy-1.22.3.tar.gz
    b56530be068796a50bf5a09105c8011e  numpy-1.22.3.zip
    

    SHA256

    92bfa69cfbdf7dfc3040978ad09a48091143cffb778ec3b03fa170c494118d75  numpy-1.22.3-cp310-cp310-macosx_10_14_x86_64.whl
    8251ed96f38b47b4295b1ae51631de7ffa8260b5b087808ef09a39a9d66c97ab  numpy-1.22.3-cp310-cp310-macosx_11_0_arm64.whl
    48a3aecd3b997bf452a2dedb11f4e79bc5bfd21a1d4cc760e703c31d57c84b3e  numpy-1.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4  numpy-1.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f950f8845b480cffe522913d35567e29dd381b0dc7e4ce6a4a9f9156417d2430  numpy-1.22.3-cp310-cp310-win32.whl
    08d9b008d0156c70dc392bb3ab3abb6e7a711383c3247b410b39962263576cd4  numpy-1.22.3-cp310-cp310-win_amd64.whl
    201b4d0552831f7250a08d3b38de0d989d6f6e4658b709a02a73c524ccc6ffce  numpy-1.22.3-cp38-cp38-macosx_10_14_x86_64.whl
    f8c1f39caad2c896bc0018f699882b345b2a63708008be29b1f355ebf6f933fe  numpy-1.22.3-cp38-cp38-macosx_11_0_arm64.whl
    568dfd16224abddafb1cbcce2ff14f522abe037268514dd7e42c6776a1c3f8e5  numpy-1.22.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    3ca688e1b9b95d80250bca34b11a05e389b1420d00e87a0d12dc45f131f704a1  numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    e7927a589df200c5e23c57970bafbd0cd322459aa7b1ff73b7c2e84d6e3eae62  numpy-1.22.3-cp38-cp38-win32.whl
    07a8c89a04997625236c5ecb7afe35a02af3896c8aa01890a849913a2309c676  numpy-1.22.3-cp38-cp38-win_amd64.whl
    2c10a93606e0b4b95c9b04b77dc349b398fdfbda382d2a39ba5a822f669a0123  numpy-1.22.3-cp39-cp39-macosx_10_14_x86_64.whl
    fade0d4f4d292b6f39951b6836d7a3c7ef5b2347f3c420cd9820a1d90d794802  numpy-1.22.3-cp39-cp39-macosx_11_0_arm64.whl
    5bfb1bb598e8229c2d5d48db1860bcf4311337864ea3efdbe1171fb0c5da515d  numpy-1.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    97098b95aa4e418529099c26558eeb8486e66bd1e53a6b606d684d0c3616b168  numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    fdf3c08bce27132395d3c3ba1503cac12e17282358cb4bddc25cc46b0aca07aa  numpy-1.22.3-cp39-cp39-win32.whl
    639b54cdf6aa4f82fe37ebf70401bbb74b8508fddcf4797f9fe59615b8c5813a  numpy-1.22.3-cp39-cp39-win_amd64.whl
    c34ea7e9d13a70bf2ab64a2532fe149a9aced424cd05a2c4ba662fd989e3e45f  numpy-1.22.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a906c0b4301a3d62ccf66d058fe779a65c1c34f6719ef2058f96e1856f48bca5  numpy-1.22.3.tar.gz
    dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18  numpy-1.22.3.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.22.3-changelog.rst(1.50 KB)
    numpy-1.22.3.tar.gz(10.03 MB)
    numpy-1.22.3.zip(10.92 MB)
    README.rst(6.53 KB)
  • v1.22.2(Feb 4, 2022)

    NumPy 1.22.2 Release Notes

    The NumPy 1.22.2 is maintenance release that fixes bugs discovered after the 1.22.1 release. Notable fixes are:

    • Several build related fixes for downstream projects and other platforms.
    • Various Annotation fixes/additions.
    • Numpy wheels for Windows will use the 1.41 tool chain, fixing downstream link problems for projects using NumPy provided libraries on Windows.
    • Deal with CVE-2021-41495 complaint.

    The Python versions supported for this release are 3.8-3.10.

    Contributors

    A total of 14 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Andrew J. Hesford +
    • Bas van Beek
    • Brénainn Woodsend +
    • Charles Harris
    • Hood Chatham
    • Janus Heide +
    • Leo Singer
    • Matti Picus
    • Mukulika Pahari
    • Niyas Sait
    • Pearu Peterson
    • Ralf Gommers
    • Sebastian Berg
    • Serge Guelton

    Pull requests merged

    A total of 21 pull requests were merged for this release.

    • #20842: BLD: Add NPY_DISABLE_SVML env var to opt out of SVML
    • #20843: BUG: Fix build of third party extensions with Py_LIMITED_API
    • #20844: TYP: Fix pyright being unable to infer the real and imag...
    • #20845: BUG: Fix comparator function signatures
    • #20906: BUG: Avoid importing numpy.distutils on import numpy.testing
    • #20907: MAINT: remove outdated mingw32 fseek support
    • #20908: TYP: Relax the return type of np.vectorize
    • #20909: BUG: fix f2py's define for threading when building with Mingw
    • #20910: BUG: distutils: fix building mixed C/Fortran extensions
    • #20912: DOC,TST: Fix Pandas code example as per new release
    • #20935: TYP, MAINT: Add annotations for flatiter.__setitem__
    • #20936: MAINT, TYP: Added missing where typehints in fromnumeric.pyi
    • #20937: BUG: Fix build_ext interaction with non numpy extensions
    • #20938: BUG: Fix missing intrinsics for windows/arm64 target
    • #20945: REL: Prepare for the NumPy 1.22.2 release.
    • #20982: MAINT: f2py: don't generate code that triggers -Wsometimes-uninitialized.
    • #20983: BUG: Fix incorrect return type in reduce without initial value
    • #20984: ENH: review return values for PyArray_DescrNew
    • #20985: MAINT: be more tolerant of setuptools >= 60
    • #20986: BUG: Fix misplaced return.
    • #20992: MAINT: Further small return value validation fixes

    Checksums

    MD5

    2319f8d7c629d0ba3d3d3b1d5605d494  numpy-1.22.2-cp310-cp310-macosx_10_14_x86_64.whl
    023c01a6d3aa528f8e88b0837dcab7ed  numpy-1.22.2-cp310-cp310-macosx_11_0_arm64.whl
    84b36e8893b811d17a19404c68db7ce6  numpy-1.22.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    744da9614e8272a384b542d129cd17a9  numpy-1.22.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ee012ed5e7c98c6f48026dfa818b2274  numpy-1.22.2-cp310-cp310-win_amd64.whl
    73e4fdcf398327bc4241dc38b6d10211  numpy-1.22.2-cp38-cp38-macosx_10_14_x86_64.whl
    9fcbca2a614af3b9a37456643ab1c99d  numpy-1.22.2-cp38-cp38-macosx_11_0_arm64.whl
    b7e0d4a19867d33765c7187d1390eef4  numpy-1.22.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    dc8d79d75588737ea77fe85a4f05365a  numpy-1.22.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    05906141c095148c53c043c381e6fabe  numpy-1.22.2-cp38-cp38-win32.whl
    05d3b6d34c0fa031e69ec0476e8d4c9c  numpy-1.22.2-cp38-cp38-win_amd64.whl
    1449889d856de0e88437fa76d3284e00  numpy-1.22.2-cp39-cp39-macosx_10_14_x86_64.whl
    e25666ab6ec0692368f328b7b98c27a3  numpy-1.22.2-cp39-cp39-macosx_11_0_arm64.whl
    59e3013894bcc6267054c746d9339cf8  numpy-1.22.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7606b9898c20d2b2aa7fc7018bc9c5cd  numpy-1.22.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    2686a1495c620e85842967bf8a5f1b2f  numpy-1.22.2-cp39-cp39-win32.whl
    54432a84807ab69ac3432e6090d5a169  numpy-1.22.2-cp39-cp39-win_amd64.whl
    4dbecace42595742485b854b213341b6  numpy-1.22.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    5b506b01ef454f39272ca75de1c7f61c  numpy-1.22.2.tar.gz
    a903008d992b77cb68129173c0f61f60  numpy-1.22.2.zip
    

    SHA256

    515a8b6edbb904594685da6e176ac9fbea8f73a5ebae947281de6613e27f1956  numpy-1.22.2-cp310-cp310-macosx_10_14_x86_64.whl
    76a4f9bce0278becc2da7da3b8ef854bed41a991f4226911a24a9711baad672c  numpy-1.22.2-cp310-cp310-macosx_11_0_arm64.whl
    168259b1b184aa83a514f307352c25c56af111c269ffc109d9704e81f72e764b  numpy-1.22.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    3556c5550de40027d3121ebbb170f61bbe19eb639c7ad0c7b482cd9b560cd23b  numpy-1.22.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    aafa46b5a39a27aca566198d3312fb3bde95ce9677085efd02c86f7ef6be4ec7  numpy-1.22.2-cp310-cp310-win_amd64.whl
    55535c7c2f61e2b2fc817c5cbe1af7cb907c7f011e46ae0a52caa4be1f19afe2  numpy-1.22.2-cp38-cp38-macosx_10_14_x86_64.whl
    60cb8e5933193a3cc2912ee29ca331e9c15b2da034f76159b7abc520b3d1233a  numpy-1.22.2-cp38-cp38-macosx_11_0_arm64.whl
    0b536b6840e84c1c6a410f3a5aa727821e6108f3454d81a5cd5900999ef04f89  numpy-1.22.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    2638389562bda1635b564490d76713695ff497242a83d9b684d27bb4a6cc9d7a  numpy-1.22.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    6767ad399e9327bfdbaa40871be4254d1995f4a3ca3806127f10cec778bd9896  numpy-1.22.2-cp38-cp38-win32.whl
    03ae5850619abb34a879d5f2d4bb4dcd025d6d8fb72f5e461dae84edccfe129f  numpy-1.22.2-cp38-cp38-win_amd64.whl
    d76a26c5118c4d96e264acc9e3242d72e1a2b92e739807b3b69d8d47684b6677  numpy-1.22.2-cp39-cp39-macosx_10_14_x86_64.whl
    15efb7b93806d438e3bc590ca8ef2f953b0ce4f86f337ef4559d31ec6cf9d7dd  numpy-1.22.2-cp39-cp39-macosx_11_0_arm64.whl
    badca914580eb46385e7f7e4e426fea6de0a37b9e06bec252e481ae7ec287082  numpy-1.22.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    94dd11d9f13ea1be17bac39c1942f527cbf7065f94953cf62dfe805653da2f8f  numpy-1.22.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    8cf33634b60c9cef346663a222d9841d3bbbc0a2f00221d6bcfd0d993d5543f6  numpy-1.22.2-cp39-cp39-win32.whl
    59153979d60f5bfe9e4c00e401e24dfe0469ef8da6d68247439d3278f30a180f  numpy-1.22.2-cp39-cp39-win_amd64.whl
    4a176959b6e7e00b5a0d6f549a479f869829bfd8150282c590deee6d099bbb6e  numpy-1.22.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    093d513a460fd94f94c16193c3ef29b2d69a33e482071e3d6d6e561a700587a6  numpy-1.22.2.tar.gz
    076aee5a3763d41da6bef9565fdf3cb987606f567cd8b104aded2b38b7b47abf  numpy-1.22.2.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.22.2-changelog.rst(2.77 KB)
    numpy-1.22.2.tar.gz(10.03 MB)
    numpy-1.22.2.zip(10.91 MB)
    README.rst(7.45 KB)
  • v1.22.1(Jan 14, 2022)

    NumPy 1.22.1 Release Notes

    The NumPy 1.22.1 is maintenance release that fixes bugs discovered after the 1.22.0 release. Notable fixes are:

    • Fix f2PY docstring problems (SciPy)
    • Fix reduction type problems (AstroPy)
    • Fix various typing bugs.

    The Python versions supported for this release are 3.8-3.10.

    Contributors

    A total of 14 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Arryan Singh
    • Bas van Beek
    • Charles Harris
    • Denis Laxalde
    • Isuru Fernando
    • Kevin Sheppard
    • Matthew Barber
    • Matti Picus
    • Melissa Weber Mendonça
    • Mukulika Pahari
    • Omid Rajaei +
    • Pearu Peterson
    • Ralf Gommers
    • Sebastian Berg

    Pull requests merged

    A total of 20 pull requests were merged for this release.

    • #20702: MAINT, DOC: Post 1.22.0 release fixes.
    • #20703: DOC, BUG: Use pngs instead of svgs.
    • #20704: DOC: Fixed the link on user-guide landing page
    • #20714: BUG: Restore vc141 support
    • #20724: BUG: Fix array dimensions solver for multidimensional arguments...
    • #20725: TYP: change type annotation for __array_namespace__ to ModuleType
    • #20726: TYP, MAINT: Allow ndindex to accept integer tuples
    • #20757: BUG: Relax dtype identity check in reductions
    • #20763: TYP: Allow time manipulation functions to accept date and timedelta...
    • #20768: TYP: Relax the type of ndarray.__array_finalize__
    • #20795: MAINT: Raise RuntimeError if setuptools version is too recent.
    • #20796: BUG, DOC: Fixes SciPy docs build warnings
    • #20797: DOC: fix OpenBLAS version in release note
    • #20798: PERF: Optimize array check for bounded 0,1 values
    • #20805: BUG: Fix that reduce-likes honor out always (and live in the...
    • #20806: BUG: array_api.argsort(descending=True) respects relative...
    • #20807: BUG: Allow integer inputs for pow-related functions in array_api
    • #20814: DOC: Refer to NumPy, not pandas, in main page
    • #20815: DOC: Update Copyright to 2022 [License]
    • #20819: BUG: Return correctly shaped inverse indices in array_api set...

    Checksums

    MD5

    8edd68c8998cb694e244ce793b2d088c  numpy-1.22.1-cp310-cp310-macosx_10_9_universal2.whl
    e4858aafd41cdba76cd14161bfc512c3  numpy-1.22.1-cp310-cp310-macosx_10_9_x86_64.whl
    96f4fc3f321625278ca3807c7c8c789c  numpy-1.22.1-cp310-cp310-macosx_11_0_arm64.whl
    2ddc25b9c9d7b517610689055f9f553a  numpy-1.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8d40c6fd64389c05646b5ef95cded6e5  numpy-1.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    1a8359c6436d1bcfe84a094337903a48  numpy-1.22.1-cp310-cp310-win_amd64.whl
    033f9aa72a732646f3fb4563226320ee  numpy-1.22.1-cp38-cp38-macosx_10_9_universal2.whl
    59e13abecdf4194f75b654f1d853b244  numpy-1.22.1-cp38-cp38-macosx_10_9_x86_64.whl
    3ce885a0c10e95f5756d7c1878eaa246  numpy-1.22.1-cp38-cp38-macosx_11_0_arm64.whl
    546b2a0866561673d5b7eadcc086af24  numpy-1.22.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    200c0a7bc3a24cfa6f4358d7274b5535  numpy-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    defe48b3b5f44c3991e830f7cde0a79c  numpy-1.22.1-cp38-cp38-win32.whl
    15557a847a78bcbf651ca6689ae37935  numpy-1.22.1-cp38-cp38-win_amd64.whl
    067e734594c67d8141190b7eabb979ee  numpy-1.22.1-cp39-cp39-macosx_10_9_universal2.whl
    1458d42b26da341baaee134d85e3fd70  numpy-1.22.1-cp39-cp39-macosx_10_9_x86_64.whl
    463b365c80efffd807194c78b4796235  numpy-1.22.1-cp39-cp39-macosx_11_0_arm64.whl
    58d8dc02dd884898c1b7ee1bee1dd216  numpy-1.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    48e2d2905822f78a96d400c78bd16cbb  numpy-1.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    c5059bd82d8f2c509c889fba09251307  numpy-1.22.1-cp39-cp39-win32.whl
    eb9a0655d16897f0adf6ea53b9f3bda4  numpy-1.22.1-cp39-cp39-win_amd64.whl
    74cb5dba2f37dc445ffd3068eb1d58fe  numpy-1.22.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    90fff1ee7c7f843fc7a234addc70c71c  numpy-1.22.1.tar.gz
    c25dad73053350dd0278605d8ed8a5c7  numpy-1.22.1.zip
    

    SHA256

    3d62d6b0870b53799204515145935608cdeb4cebb95a26800b6750e48884cc5b  numpy-1.22.1-cp310-cp310-macosx_10_9_universal2.whl
    831f2df87bd3afdfc77829bc94bd997a7c212663889d56518359c827d7113b1f  numpy-1.22.1-cp310-cp310-macosx_10_9_x86_64.whl
    8d1563060e77096367952fb44fca595f2b2f477156de389ce7c0ade3aef29e21  numpy-1.22.1-cp310-cp310-macosx_11_0_arm64.whl
    69958735d5e01f7b38226a6c6e7187d72b7e4d42b6b496aca5860b611ca0c193  numpy-1.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    45a7dfbf9ed8d68fd39763940591db7637cf8817c5bce1a44f7b56c97cbe211e  numpy-1.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    7e957ca8112c689b728037cea9c9567c27cf912741fabda9efc2c7d33d29dfa1  numpy-1.22.1-cp310-cp310-win_amd64.whl
    800dfeaffb2219d49377da1371d710d7952c9533b57f3d51b15e61c4269a1b5b  numpy-1.22.1-cp38-cp38-macosx_10_9_universal2.whl
    65f5e257987601fdfc63f1d02fca4d1c44a2b85b802f03bd6abc2b0b14648dd2  numpy-1.22.1-cp38-cp38-macosx_10_9_x86_64.whl
    632e062569b0fe05654b15ef0e91a53c0a95d08ffe698b66f6ba0f927ad267c2  numpy-1.22.1-cp38-cp38-macosx_11_0_arm64.whl
    0d245a2bf79188d3f361137608c3cd12ed79076badd743dc660750a9f3074f7c  numpy-1.22.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    26b4018a19d2ad9606ce9089f3d52206a41b23de5dfe8dc947d2ec49ce45d015  numpy-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f8ad59e6e341f38266f1549c7c2ec70ea0e3d1effb62a44e5c3dba41c55f0187  numpy-1.22.1-cp38-cp38-win32.whl
    60f19c61b589d44fbbab8ff126640ae712e163299c2dd422bfe4edc7ec51aa9b  numpy-1.22.1-cp38-cp38-win_amd64.whl
    2db01d9838a497ba2aa9a87515aeaf458f42351d72d4e7f3b8ddbd1eba9479f2  numpy-1.22.1-cp39-cp39-macosx_10_9_universal2.whl
    bcd19dab43b852b03868796f533b5f5561e6c0e3048415e675bec8d2e9d286c1  numpy-1.22.1-cp39-cp39-macosx_10_9_x86_64.whl
    78bfbdf809fc236490e7e65715bbd98377b122f329457fffde206299e163e7f3  numpy-1.22.1-cp39-cp39-macosx_11_0_arm64.whl
    c51124df17f012c3b757380782ae46eee85213a3215e51477e559739f57d9bf6  numpy-1.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    88d54b7b516f0ca38a69590557814de2dd638d7d4ed04864826acaac5ebb8f01  numpy-1.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b5ec9a5eaf391761c61fd873363ef3560a3614e9b4ead17347e4deda4358bca4  numpy-1.22.1-cp39-cp39-win32.whl
    4ac4d7c9f8ea2a79d721ebfcce81705fc3cd61a10b731354f1049eb8c99521e8  numpy-1.22.1-cp39-cp39-win_amd64.whl
    e60ef82c358ded965fdd3132b5738eade055f48067ac8a5a8ac75acc00cad31f  numpy-1.22.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    dd1968402ae20dfd59b34acd799b494be340c774f6295e9bf1c2b9842a5e416d  numpy-1.22.1.tar.gz
    e348ccf5bc5235fc405ab19d53bec215bb373300e5523c7b476cc0da8a5e9973  numpy-1.22.1.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.22.1-changelog.rst(2.64 KB)
    numpy-1.22.1.tar.gz(10.03 MB)
    numpy-1.22.1.zip(10.91 MB)
    README.rst(7.76 KB)
  • v1.22.0(Dec 31, 2021)

    NumPy 1.22.0 Release Notes

    NumPy 1.22.0 is a big release featuring the work of 153 contributors spread over 609 pull requests. There have been many improvements, highlights are:

    • Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
    • A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
    • NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
    • New methods for quantile, percentile, and related functions. The new methods provide a complete set of the methods commonly found in the literature.
    • A new configurable allocator for use by downstream projects.

    These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.

    The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.

    Expired deprecations

    Deprecated numeric style dtype strings have been removed

    Using the strings "Bytes0", "Datetime64", "Str0", "Uint32", and "Uint64" as a dtype will now raise a TypeError.

    (gh-19539)

    Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

    numpy.loads was deprecated in v1.15, with the recommendation that users use pickle.loads instead. ndfromtxt and mafromtxt were both deprecated in v1.17 - users should use numpy.genfromtxt instead with the appropriate value for the usemask parameter.

    (gh-19615)

    Deprecations

    Use delimiter rather than delimitor as kwarg in mrecords

    The misspelled keyword argument delimitor of numpy.ma.mrecords.fromtextfile() has been changed to delimiter, using it will emit a deprecation warning.

    (gh-19921)

    Passing boolean kth values to (arg-)partition has been deprecated

    numpy.partition and numpy.argpartition would previously accept boolean values for the kth parameter, which would subsequently be converted into integers. This behavior has now been deprecated.

    (gh-20000)

    The np.MachAr class has been deprecated

    The numpy.MachAr class and finfo.machar <numpy.finfo> attribute have been deprecated. Users are encouraged to access the property if interest directly from the corresponding numpy.finfo attribute.

    (gh-20201)

    Compatibility notes

    Distutils forces strict floating point model on clang

    NumPy now sets the -ftrapping-math option on clang to enforce correct floating point error handling for universal functions. Clang defaults to non-IEEE and C99 conform behaviour otherwise. This change (using the equivalent but newer -ffp-exception-behavior=strict) was attempted in NumPy 1.21, but was effectively never used.

    (gh-19479)

    Removed floor division support for complex types

    Floor division of complex types will now result in a TypeError

    >>> a = np.arange(10) + 1j* np.arange(10)
    >>> a // 1
    TypeError: ufunc 'floor_divide' not supported for the input types...
    

    (gh-19135)

    numpy.vectorize functions now produce the same output class as the base function

    When a function that respects numpy.ndarray subclasses is vectorized using numpy.vectorize, the vectorized function will now be subclass-safe also for cases that a signature is given (i.e., when creating a gufunc): the output class will be the same as that returned by the first call to the underlying function.

    (gh-19356)

    Python 3.7 is no longer supported

    Python support has been dropped. This is rather strict, there are changes that require Python >= 3.8.

    (gh-19665)

    str/repr of complex dtypes now include space after punctuation

    The repr of np.dtype({"names": ["a"], "formats": [int], "offsets": [2]}) is now dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}), whereas spaces where previously omitted after colons and between fields.

    The old behavior can be restored via np.set_printoptions(legacy="1.21").

    (gh-19687)

    Corrected advance in PCG64DSXM and PCG64

    Fixed a bug in the advance method of PCG64DSXM and PCG64. The bug only affects results when the step was larger than $2^{64}$ on platforms that do not support 128-bit integers(e.g., Windows and 32-bit Linux).

    (gh-20049)

    Change in generation of random 32 bit floating point variates

    There was bug in the generation of 32 bit floating point values from the uniform distribution that would result in the least significant bit of the random variate always being 0. This has been fixed.

    This change affects the variates produced by the random.Generator methods random, standard_normal, standard_exponential, and standard_gamma, but only when the dtype is specified as numpy.float32.

    (gh-20314)

    C API changes

    Masked inner-loops cannot be customized anymore

    The masked inner-loop selector is now never used. A warning will be given in the unlikely event that it was customized.

    We do not expect that any code uses this. If you do use it, you must unset the selector on newer NumPy version. Please also contact the NumPy developers, we do anticipate providing a new, more specific, mechanism.

    The customization was part of a never-implemented feature to allow for faster masked operations.

    (gh-19259)

    New Features

    NEP 49 configurable allocators

    As detailed in NEP 49, the function used for allocation of the data segment of a ndarray can be changed. The policy can be set globally or in a context. For more information see the NEP and the data_memory{.interpreted-text role="ref"} reference docs. Also add a NUMPY_WARN_IF_NO_MEM_POLICY override to warn on dangerous use of transfering ownership by setting NPY_ARRAY_OWNDATA.

    (gh-17582)

    Implementation of the NEP 47 (adopting the array API standard)

    An initial implementation of NEP47, adoption of the array API standard, has been added as numpy.array_api. The implementation is experimental and will issue a UserWarning on import, as the array API standard is still in draft state. numpy.array_api is a conforming implementation of the array API standard, which is also minimal, meaning that only those functions and behaviors that are required by the standard are implemented (see the NEP for more info). Libraries wishing to make use of the array API standard are encouraged to use numpy.array_api to check that they are only using functionality that is guaranteed to be present in standard conforming implementations.

    (gh-18585)

    Generate C/C++ API reference documentation from comments blocks is now possible

    This feature depends on Doxygen in the generation process and on Breathe to integrate it with Sphinx.

    (gh-18884)

    Assign the platform-specific c_intp precision via a mypy plugin

    The mypy plugin, introduced in numpy/numpy#17843, has again been expanded: the plugin now is now responsible for setting the platform-specific precision of numpy.ctypeslib.c_intp, the latter being used as data type for various numpy.ndarray.ctypes attributes.

    Without the plugin, aforementioned type will default to ctypes.c_int64.

    To enable the plugin, one must add it to their mypy configuration file:

    [mypy]
    plugins = numpy.typing.mypy_plugin
    

    (gh-19062)

    Add NEP 47-compatible dlpack support

    Add a ndarray.__dlpack__() method which returns a dlpack C structure wrapped in a PyCapsule. Also add a np._from_dlpack(obj) function, where obj supports __dlpack__(), and returns an ndarray.

    (gh-19083)

    keepdims optional argument added to numpy.argmin, numpy.argmax

    keepdims argument is added to numpy.argmin, numpy.argmax. If set to True, the axes which are reduced are left in the result as dimensions with size one. The resulting array has the same number of dimensions and will broadcast with the input array.

    (gh-19211)

    bit_count to compute the number of 1-bits in an integer

    Computes the number of 1-bits in the absolute value of the input. This works on all the numpy integer types. Analogous to the builtin int.bit_count or popcount in C++.

    >>> np.uint32(1023).bit_count()
    10
    >>> np.int32(-127).bit_count()
    7
    

    (gh-19355)

    The ndim and axis attributes have been added to numpy.AxisError

    The ndim and axis parameters are now also stored as attributes within each numpy.AxisError instance.

    (gh-19459)

    Preliminary support for windows/arm64 target

    numpy added support for windows/arm64 target. Please note OpenBLAS support is not yet available for windows/arm64 target.

    (gh-19513)

    Added support for LoongArch

    LoongArch is a new instruction set, numpy compilation failure on LoongArch architecture, so add the commit.

    (gh-19527)

    A .clang-format file has been added

    Clang-format is a C/C++ code formatter, together with the added .clang-format file, it produces code close enough to the NumPy C_STYLE_GUIDE for general use. Clang-format version 12+ is required due to the use of several new features, it is available in Fedora 34 and Ubuntu Focal among other distributions.

    (gh-19754)

    is_integer is now available to numpy.floating and numpy.integer

    Based on its counterpart in Python float and int, the numpy floating point and integer types now support float.is_integer. Returns True if the number is finite with integral value, and False otherwise.

    >>> np.float32(-2.0).is_integer()
    True
    >>> np.float64(3.2).is_integer()
    False
    >>> np.int32(-2).is_integer()
    True
    

    (gh-19803)

    Symbolic parser for Fortran dimension specifications

    A new symbolic parser has been added to f2py in order to correctly parse dimension specifications. The parser is the basis for future improvements and provides compatibility with Draft Fortran 202x.

    (gh-19805)

    ndarray, dtype and number are now runtime-subscriptable

    Mimicking PEP-585, the numpy.ndarray, numpy.dtype and numpy.number classes are now subscriptable for python 3.9 and later. Consequently, expressions that were previously only allowed in .pyi stub files or with the help of from __future__ import annotations are now also legal during runtime.

    >>> import numpy as np
    >>> from typing import Any
    
    >>> np.ndarray[Any, np.dtype[np.float64]]
    numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
    

    (gh-19879)

    Improvements

    ctypeslib.load_library can now take any path-like object

    All parameters in the can now take any python:path-like object{.interpreted-text role="term"}. This includes the likes of strings, bytes and objects implementing the __fspath__<os.PathLike.__fspath__>{.interpreted-text role="meth"} protocol.

    (gh-17530)

    Add smallest_normal and smallest_subnormal attributes to finfo

    The attributes smallest_normal and smallest_subnormal are available as an extension of finfo class for any floating-point data type. To use these new attributes, write np.finfo(np.float64).smallest_normal or np.finfo(np.float64).smallest_subnormal.

    (gh-18536)

    numpy.linalg.qr accepts stacked matrices as inputs

    numpy.linalg.qr is able to produce results for stacked matrices as inputs. Moreover, the implementation of QR decomposition has been shifted to C from Python.

    (gh-19151)

    numpy.fromregex now accepts os.PathLike implementations

    numpy.fromregex now accepts objects implementing the __fspath__<os.PathLike> protocol, e.g. pathlib.Path.

    (gh-19680)

    Add new methods for quantile and percentile

    quantile and percentile now have have a method= keyword argument supporting 13 different methods. This replaces the interpolation= keyword argument.

    The methods are now aligned with nine methods which can be found in scientific literature and the R language. The remaining methods are the previous discontinuous variations of the default "linear" one.

    Please see the documentation of numpy.percentile for more information.

    (gh-19857)

    Missing parameters have been added to the nan<x> functions

    A number of the nan<x> functions previously lacked parameters that were present in their <x>-based counterpart, e.g. the where parameter was present in numpy.mean but absent from numpy.nanmean.

    The following parameters have now been added to the nan<x> functions:

    • nanmin: initial & where
    • nanmax: initial & where
    • nanargmin: keepdims & out
    • nanargmax: keepdims & out
    • nansum: initial & where
    • nanprod: initial & where
    • nanmean: where
    • nanvar: where
    • nanstd: where

    (gh-20027)

    Annotating the main Numpy namespace

    Starting from the 1.20 release, PEP 484 type annotations have been included for parts of the NumPy library; annotating the remaining functions being a work in progress. With the release of 1.22 this process has been completed for the main NumPy namespace, which is now fully annotated.

    Besides the main namespace, a limited number of sub-packages contain annotations as well. This includes, among others, numpy.testing, numpy.linalg and numpy.random (available since 1.21).

    (gh-20217)

    Vectorize umath module using AVX-512

    By leveraging Intel Short Vector Math Library (SVML), 18 umath functions (exp2, log2, log10, expm1, log1p, cbrt, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh, arctanh) are vectorized using AVX-512 instruction set for both single and double precision implementations. This change is currently enabled only for Linux users and on processors with AVX-512 instruction set. It provides an average speed up of 32x and 14x for single and double precision functions respectively.

    (gh-19478)

    OpenBLAS v0.3.18

    Update the OpenBLAS used in testing and in wheels to v0.3.18

    (gh-20058)

    Checksums

    MD5

    66757b963ad5835038b9a2a9df852c84  numpy-1.22.0-cp310-cp310-macosx_10_9_universal2.whl
    86b7f3a94c09dbd6869614c4d7f9ba5e  numpy-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl
    5184db17d8e5e6ecdc53e2f0a6964c35  numpy-1.22.0-cp310-cp310-macosx_11_0_arm64.whl
    6643e9a076cce736cfbe15face4db9db  numpy-1.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    6efef45bf63594703c094b2ad729e648  numpy-1.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    7a1a21bb0958a3eb920deeef9e745935  numpy-1.22.0-cp310-cp310-win_amd64.whl
    45241fb5f31ea46e2b6f1321a63c8e1c  numpy-1.22.0-cp38-cp38-macosx_10_9_universal2.whl
    472f24a5d35116634fcc57e9bda899bc  numpy-1.22.0-cp38-cp38-macosx_10_9_x86_64.whl
    6c15cf7847b20101ae281ade6121b79e  numpy-1.22.0-cp38-cp38-macosx_11_0_arm64.whl
    313f0fd99a899a7465511c1418e1031f  numpy-1.22.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    9ae6ecde0cbeadd2a9d7b8ae54285863  numpy-1.22.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    0f31a7b9e128b0cdafecf98cf1301fc0  numpy-1.22.0-cp38-cp38-win32.whl
    f4b45579cf532ea632b890b1df387081  numpy-1.22.0-cp38-cp38-win_amd64.whl
    2cb27112b11c16f700e6019f5fd36408  numpy-1.22.0-cp39-cp39-macosx_10_9_universal2.whl
    4554a5797a4cb787b5169a8f5482fb95  numpy-1.22.0-cp39-cp39-macosx_10_9_x86_64.whl
    3780decd94837da6f0816f2feaace9c2  numpy-1.22.0-cp39-cp39-macosx_11_0_arm64.whl
    6e519dd5205510dfebcadc6f7fdf9738  numpy-1.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    89d455bf290f459a70c57620f02d5b69  numpy-1.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    6425f8d7dc779a54b8074e198cea43c9  numpy-1.22.0-cp39-cp39-win32.whl
    1b5c670328146975b21b54fa5ef8ec4c  numpy-1.22.0-cp39-cp39-win_amd64.whl
    05d842127ca85cca12fed3a26b0f5177  numpy-1.22.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ab751b8d4195f91ae61a402184d16d18  numpy-1.22.0.tar.gz
    252de134862a27bd66705d29622edbfe  numpy-1.22.0.zip
    

    SHA256

    3d22662b4b10112c545c91a0741f2436f8ca979ab3d69d03d19322aa970f9695  numpy-1.22.0-cp310-cp310-macosx_10_9_universal2.whl
    11a1f3816ea82eed4178102c56281782690ab5993251fdfd75039aad4d20385f  numpy-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl
    5dc65644f75a4c2970f21394ad8bea1a844104f0fe01f278631be1c7eae27226  numpy-1.22.0-cp310-cp310-macosx_11_0_arm64.whl
    42c16cec1c8cf2728f1d539bd55aaa9d6bb48a7de2f41eb944697293ef65a559  numpy-1.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a97e82c39d9856fe7d4f9b86d8a1e66eff99cf3a8b7ba48202f659703d27c46f  numpy-1.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    e41e8951749c4b5c9a2dc5fdbc1a4eec6ab2a140fdae9b460b0f557eed870f4d  numpy-1.22.0-cp310-cp310-win_amd64.whl
    bece0a4a49e60e472a6d1f70ac6cdea00f9ab80ff01132f96bd970cdd8a9e5a9  numpy-1.22.0-cp38-cp38-macosx_10_9_universal2.whl
    818b9be7900e8dc23e013a92779135623476f44a0de58b40c32a15368c01d471  numpy-1.22.0-cp38-cp38-macosx_10_9_x86_64.whl
    47ee7a839f5885bc0c63a74aabb91f6f40d7d7b639253768c4199b37aede7982  numpy-1.22.0-cp38-cp38-macosx_11_0_arm64.whl
    a024181d7aef0004d76fb3bce2a4c9f2e67a609a9e2a6ff2571d30e9976aa383  numpy-1.22.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    f71d57cc8645f14816ae249407d309be250ad8de93ef61d9709b45a0ddf4050c  numpy-1.22.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    283d9de87c0133ef98f93dfc09fad3fb382f2a15580de75c02b5bb36a5a159a5  numpy-1.22.0-cp38-cp38-win32.whl
    2762331de395739c91f1abb88041f94a080cb1143aeec791b3b223976228af3f  numpy-1.22.0-cp38-cp38-win_amd64.whl
    76ba7c40e80f9dc815c5e896330700fd6e20814e69da9c1267d65a4d051080f1  numpy-1.22.0-cp39-cp39-macosx_10_9_universal2.whl
    0cfe07133fd00b27edee5e6385e333e9eeb010607e8a46e1cd673f05f8596595  numpy-1.22.0-cp39-cp39-macosx_10_9_x86_64.whl
    6ed0d073a9c54ac40c41a9c2d53fcc3d4d4ed607670b9e7b0de1ba13b4cbfe6f  numpy-1.22.0-cp39-cp39-macosx_11_0_arm64.whl
    41388e32e40b41dd56eb37fcaa7488b2b47b0adf77c66154d6b89622c110dfe9  numpy-1.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    b55b953a1bdb465f4dc181758570d321db4ac23005f90ffd2b434cc6609a63dd  numpy-1.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    5a311ee4d983c487a0ab546708edbdd759393a3dc9cd30305170149fedd23c88  numpy-1.22.0-cp39-cp39-win32.whl
    a97a954a8c2f046d3817c2bce16e3c7e9a9c2afffaf0400f5c16df5172a67c9c  numpy-1.22.0-cp39-cp39-win_amd64.whl
    bb02929b0d6bfab4c48a79bd805bd7419114606947ec8284476167415171f55b  numpy-1.22.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f2be14ba396780a6f662b8ba1a24466c9cf18a6a386174f614668e58387a13d7  numpy-1.22.0.tar.gz
    a955e4128ac36797aaffd49ab44ec74a71c11d6938df83b1285492d277db5397  numpy-1.22.0.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.22.0-changelog.rst(67.70 KB)
    numpy-1.22.0.tar.gz(9.88 MB)
    numpy-1.22.0.zip(10.76 MB)
    README.rst(23.82 KB)
  • v1.21.5(Dec 20, 2021)

    NumPy 1.21.5 Release Notes

    NumPy 1.21.5 is a maintenance release that fixes a few bugs discovered after the 1.21.4 release and does some maintenance to extend the 1.21.x lifetime. The Python versions supported in this release are 3.7-3.10. If you want to compile your own version using gcc-11, you will need to use gcc-11.2+ to avoid problems.

    Contributors

    A total of 7 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Bas van Beek
    • Charles Harris
    • Matti Picus
    • Rohit Goswami
    • Ross Barnowski
    • Sayed Adel
    • Sebastian Berg

    Pull requests merged

    A total of 11 pull requests were merged for this release.

    • #20357: MAINT: Do not forward __(deep)copy__ calls of _GenericAlias...
    • #20462: BUG: Fix float16 einsum fastpaths using wrong tempvar
    • #20463: BUG, DIST: Print os error message when the executable not exist
    • #20464: BLD: Verify the ability to compile C++ sources before initiating...
    • #20465: BUG: Force npymath to respect npy_longdouble
    • #20466: BUG: Fix failure to create aligned, empty structured dtype
    • #20467: ENH: provide a convenience function to replace npy_load_module
    • #20495: MAINT: update wheel to version that supports python3.10
    • #20497: BUG: Clear errors correctly in F2PY conversions
    • #20613: DEV: add a warningfilter to fix pytest workflow.
    • #20618: MAINT: Help boost::python libraries at least not crash

    Checksums

    MD5

    e00a3c2e1461dd2920ab4af6b753d3da  numpy-1.21.5-cp310-cp310-macosx_10_9_universal2.whl
    50e0526fa29110fb6033fa8285fba4e1  numpy-1.21.5-cp310-cp310-macosx_10_9_x86_64.whl
    bdbb19e7656d66250aa67bd1c7924764  numpy-1.21.5-cp310-cp310-macosx_11_0_arm64.whl
    c5c982a07797c8963b8fec44aae6db09  numpy-1.21.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8b27b622f58caeeb7f14472651d655e3  numpy-1.21.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    e545f6f85f950f57606efcaeeac2e50a  numpy-1.21.5-cp310-cp310-win_amd64.whl
    5c36eefdcb039c0d4db8882fddbeb695  numpy-1.21.5-cp37-cp37m-macosx_10_9_x86_64.whl
    b5d080e0fd8b658419b3636f1cf5dc3a  numpy-1.21.5-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    ec1a9a1333a2bf61897f105ecd9f212a  numpy-1.21.5-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    d5ab050300748f20cdc9c6e17ba8ffd4  numpy-1.21.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    b7498a1d0ea7273ef1af56d58e02a550  numpy-1.21.5-cp37-cp37m-win32.whl
    f55c7ecfd35769fb3f6a408c0c123372  numpy-1.21.5-cp37-cp37m-win_amd64.whl
    843e3431ba4b56d3fc36b7c4cb6fc10c  numpy-1.21.5-cp38-cp38-macosx_10_9_universal2.whl
    4721e71bdc5697d310cd3a6b6cd60741  numpy-1.21.5-cp38-cp38-macosx_10_9_x86_64.whl
    2169fb8ed40046e1e33d187fc85b91bb  numpy-1.21.5-cp38-cp38-macosx_11_0_arm64.whl
    52de43977749109509ee708a142a7d97  numpy-1.21.5-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    703c0f54c5ede8cc0c648ef66cafac47  numpy-1.21.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    50432f9cf1d5b2278ceb7a96890353ed  numpy-1.21.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    0c4c5336136e045d02c60ba8115eb6a2  numpy-1.21.5-cp38-cp38-win32.whl
    c2e0744164f8255be70725ef42bc3f5b  numpy-1.21.5-cp38-cp38-win_amd64.whl
    b16dd7103117d051cb6c3b6c4434f7d2  numpy-1.21.5-cp39-cp39-macosx_10_9_universal2.whl
    220dd07273aeb0b2ca8f0e4f543e43c3  numpy-1.21.5-cp39-cp39-macosx_10_9_x86_64.whl
    1dd09ad75eff93b274f650871e0b9287  numpy-1.21.5-cp39-cp39-macosx_11_0_arm64.whl
    6801263f51d3b13420b59ff84c716869  numpy-1.21.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    035bde3955ae2f62ada65084d71a7421  numpy-1.21.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    09f202576cbd0ed6121cff10cdea831a  numpy-1.21.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    c6a44c90c2d5124fea6cedbbf575e252  numpy-1.21.5-cp39-cp39-win32.whl
    bbc11e31406a9fc48c18a41259bc8866  numpy-1.21.5-cp39-cp39-win_amd64.whl
    5be2b6f6cf6fb3a3d98231e891260624  numpy-1.21.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    8bc9ff24bac9bf4268372cefea8f0b6b  numpy-1.21.5.tar.gz
    88b5438ded7992fa2e6a810d43cd32a1  numpy-1.21.5.zip
    

    SHA256

    301e408a052fdcda5cdcf03021ebafc3c6ea093021bf9d1aa47c54d48bdad166  numpy-1.21.5-cp310-cp310-macosx_10_9_universal2.whl
    a7e8f6216f180f3fd4efb73de5d1eaefb5f5a1ee5b645c67333033e39440e63a  numpy-1.21.5-cp310-cp310-macosx_10_9_x86_64.whl
    fc7a7d7b0ed72589fd8b8486b9b42a564f10b8762be8bd4d9df94b807af4a089  numpy-1.21.5-cp310-cp310-macosx_11_0_arm64.whl
    58ca1d7c8aef6e996112d0ce873ac9dfa1eaf4a1196b4ff7ff73880a09923ba7  numpy-1.21.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    dc4b2fb01f1b4ddbe2453468ea0719f4dbb1f5caa712c8b21bb3dd1480cd30d9  numpy-1.21.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    cc1b30205d138d1005adb52087ff45708febbef0e420386f58664f984ef56954  numpy-1.21.5-cp310-cp310-win_amd64.whl
    08de8472d9f7571f9d51b27b75e827f5296295fa78817032e84464be8bb905bc  numpy-1.21.5-cp37-cp37m-macosx_10_9_x86_64.whl
    4fe6a006557b87b352c04596a6e3f12a57d6e5f401d804947bd3188e6b0e0e76  numpy-1.21.5-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    3d893b0871322eaa2f8c7072cdb552d8e2b27645b7875a70833c31e9274d4611  numpy-1.21.5-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    341dddcfe3b7b6427a28a27baa59af5ad51baa59bfec3264f1ab287aa3b30b13  numpy-1.21.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    ca9c23848292c6fe0a19d212790e62f398fd9609aaa838859be8459bfbe558aa  numpy-1.21.5-cp37-cp37m-win32.whl
    025b497014bc33fc23897859350f284323f32a2fff7654697f5a5fc2a19e9939  numpy-1.21.5-cp37-cp37m-win_amd64.whl
    3a5098df115340fb17fc93867317a947e1dcd978c3888c5ddb118366095851f8  numpy-1.21.5-cp38-cp38-macosx_10_9_universal2.whl
    311283acf880cfcc20369201bd75da907909afc4666966c7895cbed6f9d2c640  numpy-1.21.5-cp38-cp38-macosx_10_9_x86_64.whl
    b545ebadaa2b878c8630e5bcdb97fc4096e779f335fc0f943547c1c91540c815  numpy-1.21.5-cp38-cp38-macosx_11_0_arm64.whl
    c5562bcc1a9b61960fc8950ade44d00e3de28f891af0acc96307c73613d18f6e  numpy-1.21.5-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    eed2afaa97ec33b4411995be12f8bdb95c87984eaa28d76cf628970c8a2d689a  numpy-1.21.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    61bada43d494515d5b122f4532af226fdb5ee08fe5b5918b111279843dc6836a  numpy-1.21.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7b9d6b14fc9a4864b08d1ba57d732b248f0e482c7b2ff55c313137e3ed4d8449  numpy-1.21.5-cp38-cp38-win32.whl
    dbce7adeb66b895c6aaa1fad796aaefc299ced597f6fbd9ceddb0dd735245354  numpy-1.21.5-cp38-cp38-win_amd64.whl
    507c05c7a37b3683eb08a3ff993bd1ee1e6c752f77c2f275260533b265ecdb6c  numpy-1.21.5-cp39-cp39-macosx_10_9_universal2.whl
    00c9fa73a6989895b8815d98300a20ac993c49ac36c8277e8ffeaa3631c0dbbb  numpy-1.21.5-cp39-cp39-macosx_10_9_x86_64.whl
    69a5a8d71c308d7ef33ef72371c2388a90e3495dbb7993430e674006f94797d5  numpy-1.21.5-cp39-cp39-macosx_11_0_arm64.whl
    2d8adfca843bc46ac199a4645233f13abf2011a0b2f4affc5c37cd552626f27b  numpy-1.21.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    c293d3c0321996cd8ffe84215ffe5d269fd9d1d12c6f4ffe2b597a7c30d3e593  numpy-1.21.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    3c978544be9e04ed12016dd295a74283773149b48f507d69b36f91aa90a643e5  numpy-1.21.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    2a9add27d7fc0fdb572abc3b2486eb3b1395da71e0254c5552b2aad2a18b5441  numpy-1.21.5-cp39-cp39-win32.whl
    1964db2d4a00348b7a60ee9d013c8cb0c566644a589eaa80995126eac3b99ced  numpy-1.21.5-cp39-cp39-win_amd64.whl
    a7c4b701ca418cd39e28ec3b496e6388fe06de83f5f0cb74794fa31cfa384c02  numpy-1.21.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    1a7ee0ffb35dc7489aebe5185a483f4c43b0d2cf784c3c9940f975a7dde56506  numpy-1.21.5.tar.gz
    6a5928bc6241264dce5ed509e66f33676fc97f464e7a919edc672fb5532221ee  numpy-1.21.5.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.21.5-changelog.rst(1.60 KB)
    numpy-1.21.5.tar.gz(9.31 MB)
    numpy-1.21.5.zip(10.15 MB)
    README.rst(8.49 KB)
  • v1.22.0rc3(Dec 18, 2021)

    NumPy 1.22.0 Release Notes

    NumPy 1.22.0 is a big release featuring the work of 152 contributers spread over 602 pull requests. There have been many improvements, highlights are:

    • Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
    • A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
    • NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
    • New methods for quantile, percentile, and related functions. The new methods provide a complete set of the methods commonly found in the literature.
    • A new configurable allocator for use by downstream projects.

    These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.

    The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.

    Expired deprecations

    Deprecated numeric style dtype strings have been removed

    Using the strings "Bytes0", "Datetime64", "Str0", "Uint32", and "Uint64" as a dtype will now raise a TypeError.

    (gh-19539)

    Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

    numpy.loads was deprecated in v1.15, with the recommendation that users use pickle.loads instead. ndfromtxt and mafromtxt were both deprecated in v1.17 - users should use numpy.genfromtxt instead with the appropriate value for the usemask parameter.

    (gh-19615)

    Deprecations

    Use delimiter rather than delimitor as kwarg in mrecords

    The misspelled keyword argument delimitor of numpy.ma.mrecords.fromtextfile() has been changed to delimiter, using it will emit a deprecation warning.

    (gh-19921)

    Passing boolean kth values to (arg-)partition has been deprecated

    numpy.partition and numpy.argpartition would previously accept boolean values for the kth parameter, which would subsequently be converted into integers. This behavior has now been deprecated.

    (gh-20000)

    The np.MachAr class has been deprecated

    The numpy.MachAr class and finfo.machar <numpy.finfo> attribute have been deprecated. Users are encouraged to access the property if interest directly from the corresponding numpy.finfo attribute.

    (gh-20201)

    Compatibility notes

    Distutils forces strict floating point model on clang

    NumPy now sets the -ftrapping-math option on clang to enforce correct floating point error handling for universal functions. Clang defaults to non-IEEE and C99 conform behaviour otherwise. This change (using the equivalent but newer -ffp-exception-behavior=strict) was attempted in NumPy 1.21, but was effectively never used.

    (gh-19479)

    Removed floor division support for complex types

    Floor division of complex types will now result in a TypeError

    >>> a = np.arange(10) + 1j* np.arange(10)
    >>> a // 1
    TypeError: ufunc 'floor_divide' not supported for the input types...
    

    (gh-19135)

    numpy.vectorize functions now produce the same output class as the base function

    When a function that respects numpy.ndarray subclasses is vectorized using numpy.vectorize, the vectorized function will now be subclass-safe also for cases that a signature is given (i.e., when creating a gufunc): the output class will be the same as that returned by the first call to the underlying function.

    (gh-19356)

    Python 3.7 is no longer supported

    Python support has been dropped. This is rather strict, there are changes that require Python >= 3.8.

    (gh-19665)

    str/repr of complex dtypes now include space after punctuation

    The repr of np.dtype({"names": ["a"], "formats": [int], "offsets": [2]}) is now dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}), whereas spaces where previously omitted after colons and between fields.

    The old behavior can be restored via np.set_printoptions(legacy="1.21").

    (gh-19687)

    Corrected advance in PCG64DSXM and PCG64

    Fixed a bug in the advance method of PCG64DSXM and PCG64. The bug only affects results when the step was larger than $2^{64}$ on platforms that do not support 128-bit integers(e.g., Windows and 32-bit Linux).

    (gh-20049)

    Change in generation of random 32 bit floating point variates

    There was bug in the generation of 32 bit floating point values from the uniform distribution that would result in the least significant bit of the random variate always being 0. This has been fixed.

    This change affects the variates produced by the random.Generator methods random, standard_normal, standard_exponential, and standard_gamma, but only when the dtype is specified as numpy.float32.

    (gh-20314)

    C API changes

    Masked inner-loops cannot be customized anymore

    The masked inner-loop selector is now never used. A warning will be given in the unlikely event that it was customized.

    We do not expect that any code uses this. If you do use it, you must unset the selector on newer NumPy version. Please also contact the NumPy developers, we do anticipate providing a new, more specific, mechanism.

    The customization was part of a never-implemented feature to allow for faster masked operations.

    (gh-19259)

    New Features

    NEP 49 configurable allocators

    As detailed in NEP 49, the function used for allocation of the data segment of a ndarray can be changed. The policy can be set globally or in a context. For more information see the NEP and the data_memory{.interpreted-text role="ref"} reference docs. Also add a NUMPY_WARN_IF_NO_MEM_POLICY override to warn on dangerous use of transfering ownership by setting NPY_ARRAY_OWNDATA.

    (gh-17582)

    Implementation of the NEP 47 (adopting the array API standard)

    An initial implementation of NEP47, adoption of the array API standard, has been added as numpy.array_api. The implementation is experimental and will issue a UserWarning on import, as the array API standard is still in draft state. numpy.array_api is a conforming implementation of the array API standard, which is also minimal, meaning that only those functions and behaviors that are required by the standard are implemented (see the NEP for more info). Libraries wishing to make use of the array API standard are encouraged to use numpy.array_api to check that they are only using functionality that is guaranteed to be present in standard conforming implementations.

    (gh-18585)

    Generate C/C++ API reference documentation from comments blocks is now possible

    This feature depends on Doxygen in the generation process and on Breathe to integrate it with Sphinx.

    (gh-18884)

    Assign the platform-specific c_intp precision via a mypy plugin

    The mypy plugin, introduced in numpy/numpy#17843, has again been expanded: the plugin now is now responsible for setting the platform-specific precision of numpy.ctypeslib.c_intp, the latter being used as data type for various numpy.ndarray.ctypes attributes.

    Without the plugin, aforementioned type will default to ctypes.c_int64.

    To enable the plugin, one must add it to their mypy configuration file:

    [mypy]
    plugins = numpy.typing.mypy_plugin
    

    (gh-19062)

    Add NEP 47-compatible dlpack support

    Add a ndarray.__dlpack__() method which returns a dlpack C structure wrapped in a PyCapsule. Also add a np._from_dlpack(obj) function, where obj supports __dlpack__(), and returns an ndarray.

    (gh-19083)

    keepdims optional argument added to numpy.argmin, numpy.argmax

    keepdims argument is added to numpy.argmin, numpy.argmax. If set to True, the axes which are reduced are left in the result as dimensions with size one. The resulting array has the same number of dimensions and will broadcast with the input array.

    (gh-19211)

    bit_count to compute the number of 1-bits in an integer

    Computes the number of 1-bits in the absolute value of the input. This works on all the numpy integer types. Analogous to the builtin int.bit_count or popcount in C++.

    >>> np.uint32(1023).bit_count()
    10
    >>> np.int32(-127).bit_count()
    7
    

    (gh-19355)

    The ndim and axis attributes have been added to numpy.AxisError

    The ndim and axis parameters are now also stored as attributes within each numpy.AxisError instance.

    (gh-19459)

    Preliminary support for windows/arm64 target

    numpy added support for windows/arm64 target. Please note OpenBLAS support is not yet available for windows/arm64 target.

    (gh-19513)

    Added support for LoongArch

    LoongArch is a new instruction set, numpy compilation failure on LoongArch architecture, so add the commit.

    (gh-19527)

    A .clang-format file has been added

    Clang-format is a C/C++ code formatter, together with the added .clang-format file, it produces code close enough to the NumPy C_STYLE_GUIDE for general use. Clang-format version 12+ is required due to the use of several new features, it is available in Fedora 34 and Ubuntu Focal among other distributions.

    (gh-19754)

    is_integer is now available to numpy.floating and numpy.integer

    Based on its counterpart in Python float and int, the numpy floating point and integer types now support float.is_integer. Returns True if the number is finite with integral value, and False otherwise.

    >>> np.float32(-2.0).is_integer()
    True
    >>> np.float64(3.2).is_integer()
    False
    >>> np.int32(-2).is_integer()
    True
    

    (gh-19803)

    Symbolic parser for Fortran dimension specifications

    A new symbolic parser has been added to f2py in order to correctly parse dimension specifications. The parser is the basis for future improvements and provides compatibility with Draft Fortran 202x.

    (gh-19805)

    ndarray, dtype and number are now runtime-subscriptable

    Mimicking PEP-585, the numpy.ndarray, numpy.dtype and numpy.number classes are now subscriptable for python 3.9 and later. Consequently, expressions that were previously only allowed in .pyi stub files or with the help of from __future__ import annotations are now also legal during runtime.

    >>> import numpy as np
    >>> from typing import Any
    
    >>> np.ndarray[Any, np.dtype[np.float64]]
    numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
    

    (gh-19879)

    Improvements

    ctypeslib.load_library can now take any path-like object

    All parameters in the can now take any python:path-like object{.interpreted-text role="term"}. This includes the likes of strings, bytes and objects implementing the __fspath__<os.PathLike.__fspath__>{.interpreted-text role="meth"} protocol.

    (gh-17530)

    Add smallest_normal and smallest_subnormal attributes to finfo

    The attributes smallest_normal and smallest_subnormal are available as an extension of finfo class for any floating-point data type. To use these new attributes, write np.finfo(np.float64).smallest_normal or np.finfo(np.float64).smallest_subnormal.

    (gh-18536)

    numpy.linalg.qr accepts stacked matrices as inputs

    numpy.linalg.qr is able to produce results for stacked matrices as inputs. Moreover, the implementation of QR decomposition has been shifted to C from Python.

    (gh-19151)

    numpy.fromregex now accepts os.PathLike implementations

    numpy.fromregex now accepts objects implementing the __fspath__<os.PathLike> protocol, e.g. pathlib.Path.

    (gh-19680)

    Add new methods for quantile and percentile

    quantile and percentile now have have a method= keyword argument supporting 13 different methods. This replaces the interpolation= keyword argument.

    The methods are now aligned with nine methods which can be found in scientific literature and the R language. The remaining methods are the previous discontinuous variations of the default "linear" one.

    Please see the documentation of numpy.percentile for more information.

    (gh-19857)

    Missing parameters have been added to the nan<x> functions

    A number of the nan<x> functions previously lacked parameters that were present in their <x>-based counterpart, e.g. the where parameter was present in numpy.mean but absent from numpy.nanmean.

    The following parameters have now been added to the nan<x> functions:

    • nanmin: initial & where
    • nanmax: initial & where
    • nanargmin: keepdims & out
    • nanargmax: keepdims & out
    • nansum: initial & where
    • nanprod: initial & where
    • nanmean: where
    • nanvar: where
    • nanstd: where

    (gh-20027)

    Annotating the main Numpy namespace

    Starting from the 1.20 release, PEP 484 type annotations have been included for parts of the NumPy library; annotating the remaining functions being a work in progress. With the release of 1.22 this process has been completed for the main NumPy namespace, which is now fully annotated.

    Besides the main namespace, a limited number of sub-packages contain annotations as well. This includes, among others, numpy.testing, numpy.linalg and numpy.random (available since 1.21).

    (gh-20217)

    Vectorize umath module using AVX-512

    By leveraging Intel Short Vector Math Library (SVML), 18 umath functions (exp2, log2, log10, expm1, log1p, cbrt, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh, arctanh) are vectorized using AVX-512 instruction set for both single and double precision implementations. This change is currently enabled only for Linux users and on processors with AVX-512 instruction set. It provides an average speed up of 32x and 14x for single and double precision functions respectively.

    (gh-19478)

    OpenBLAS v0.3.17

    Update the OpenBLAS used in testing and in wheels to v0.3.17

    (gh-19462)

    Checksums

    MD5

    b23c1c11503d1e1c29ac58c3febfbe1a  numpy-1.22.0rc3-cp310-cp310-macosx_10_9_universal2.whl
    fdf997a0a53a1dcd33bb239132fa690f  numpy-1.22.0rc3-cp310-cp310-macosx_10_9_x86_64.whl
    c7e7d35bb1bdf67b83e1cb0da8a761b6  numpy-1.22.0rc3-cp310-cp310-macosx_11_0_arm64.whl
    148a33cfb225369800f3a9b3e3c9bb7d  numpy-1.22.0rc3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    021009e2e46a0d76d3dd876a23a48a2e  numpy-1.22.0rc3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ff4080c69d1784e77d8dd0a8f81d85b8  numpy-1.22.0rc3-cp310-cp310-win_amd64.whl
    11e8f56c37ce7e5584a4e63f866acbf9  numpy-1.22.0rc3-cp38-cp38-macosx_10_9_universal2.whl
    cb378d8f6de2517f3eaa82893e8c6ad6  numpy-1.22.0rc3-cp38-cp38-macosx_10_9_x86_64.whl
    e2e8c26bea00f2519cc5060d5480c746  numpy-1.22.0rc3-cp38-cp38-macosx_11_0_arm64.whl
    7da9371b5f6f1a615610dc6625f4d783  numpy-1.22.0rc3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    e4757f030cd9ac121c5fff3ceb783975  numpy-1.22.0rc3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    08cd8858c64a7e2e4e4c19edc55f283e  numpy-1.22.0rc3-cp38-cp38-win32.whl
    da71dfd7685f4056a892e5af7f01d516  numpy-1.22.0rc3-cp38-cp38-win_amd64.whl
    029a566a13e7358465bd6b8b884b16f3  numpy-1.22.0rc3-cp39-cp39-macosx_10_9_universal2.whl
    ce5c8ad1b490f2f834739b74502e9aed  numpy-1.22.0rc3-cp39-cp39-macosx_10_9_x86_64.whl
    a7c6dae3cce7d3885b8600cd102adf74  numpy-1.22.0rc3-cp39-cp39-macosx_11_0_arm64.whl
    e97a1ecbb39cfd7b80f78c73f4ecba51  numpy-1.22.0rc3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    ff32a6642b8c033b51da5421b626645c  numpy-1.22.0rc3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    4e8c44f9c72d9c72a5610cb142e9ee52  numpy-1.22.0rc3-cp39-cp39-win32.whl
    5c264fca3e74568f0a54169fc55d506f  numpy-1.22.0rc3-cp39-cp39-win_amd64.whl
    1aef1271d98ac4f7b9005a2baacc837e  numpy-1.22.0rc3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    19ed28cde2192447ac3ba2971a7d2660  numpy-1.22.0rc3.tar.gz
    cfc937c6311761b0699e6d0405433deb  numpy-1.22.0rc3.zip
    

    SHA256

    4315a66e64fe1adc7f7fa51116c87cdf5a78f2f8265c6d0ee27bfcbe845b3ddf  numpy-1.22.0rc3-cp310-cp310-macosx_10_9_universal2.whl
    af16e2163c1edfaa82ec43a220acc31ad0ff51619efcb41d79440dfc130e9562  numpy-1.22.0rc3-cp310-cp310-macosx_10_9_x86_64.whl
    ced56665c49691ad8a31d553e42248566678f188e7c1813cadc947bfb91f3abd  numpy-1.22.0rc3-cp310-cp310-macosx_11_0_arm64.whl
    f13703ad4849ef62d3dadc1af1e00ce2762458b4466d4f3e339d84e6b450af33  numpy-1.22.0rc3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    6ebe0f0f40aa86c5cbe41e017e2028ba318e0743d93674a19f06a2401e602bd7  numpy-1.22.0rc3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    11fb5ee7b8a2a01bccdfb715889cb1a8490bfceeba1ab1ca9d01c92329ca5a4b  numpy-1.22.0rc3-cp310-cp310-win_amd64.whl
    301df2531616ff7dac8224c104b38d301adabb96c12650dae06d2036da53c385  numpy-1.22.0rc3-cp38-cp38-macosx_10_9_universal2.whl
    3d0b6fb9796ba83500990dc18d8dbeaca49559c7f7f47da723fee902a99ee4bb  numpy-1.22.0rc3-cp38-cp38-macosx_10_9_x86_64.whl
    5b46584808f06d90df177520136cfeb5f2151b0e6a762e94c05a36f82140ff7b  numpy-1.22.0rc3-cp38-cp38-macosx_11_0_arm64.whl
    20016b0ed895bb80f37caadd224b01b6cc52520766ba67d8f5536ac16ef08002  numpy-1.22.0rc3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    2313aa9b9684b36b0bf07e44432d025e0803518286a1ecae5f0ea947b46008df  numpy-1.22.0rc3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    af718720cb23c795a1470fde1a860c7fbbcd1387e1f3755cf734417f96124766  numpy-1.22.0rc3-cp38-cp38-win32.whl
    26271b883db7ff9e375df36ad92fc9921fc336480d0aabe4483503640c9b5dd3  numpy-1.22.0rc3-cp38-cp38-win_amd64.whl
    e55a7a201e1972e2686ffee1dba1ddf5e041989018a707540ba10be8367331b1  numpy-1.22.0rc3-cp39-cp39-macosx_10_9_universal2.whl
    b445551ff10fe31adb76df0e6d0210e02c586686297faddcf453dd51ce2b2ea0  numpy-1.22.0rc3-cp39-cp39-macosx_10_9_x86_64.whl
    a0964771a7660fd3d2420d6be0a08144f49f14d684bbe85f67467ad81bd73180  numpy-1.22.0rc3-cp39-cp39-macosx_11_0_arm64.whl
    6eaa053519d1ed5922621ecb04d33d64769508060860eb0b8a07502d55554a2c  numpy-1.22.0rc3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    222ce51bf9d4c77f2222049d75ea908f1862302cab7d5ccdb88773b9514e10af  numpy-1.22.0rc3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    07805b77c2b4582bc6888795c0463bf3d4bd758dee922fcd685413eb3274295f  numpy-1.22.0rc3-cp39-cp39-win32.whl
    b63c2976f10a94af28c2860a74d7cf07ed9489ebfd36fbadb9816d3bf6ba8efb  numpy-1.22.0rc3-cp39-cp39-win_amd64.whl
    c3a8d12b5bf04ce3495ad2b4d706a3058415185c16d3e8d094264a9de62d52e2  numpy-1.22.0rc3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    2a61da0dc062655097cefa5ae47712317b677f22bf3f20cf397c52fae57dea8a  numpy-1.22.0rc3.tar.gz
    0b5642efe2a36f2191102b44bb95ee1479f14c1adb2d7155303e50b2517e43bc  numpy-1.22.0rc3.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.22.0-changelog.rst(66.95 KB)
    numpy-1.22.0rc3.tar.gz(9.88 MB)
    numpy-1.22.0rc3.zip(10.77 MB)
    README.rst(23.34 KB)
  • v1.22.0rc2(Dec 10, 2021)

    NumPy 1.22.0 Release Notes

    NumPy 1.22.0 is a big release featuring the work of 151 contributers spread over 589 pull requests. There have been many improvements, highlights are:

    • Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
    • A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
    • NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
    • New methods for quantile, percentile, and related functions. The new methods provide a complete set of the methods commonly found in the literature.
    • A new configurable allocator for use by downstream projects.

    These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.

    The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.

    Expired deprecations

    Deprecated numeric style dtype strings have been removed

    Using the strings "Bytes0", "Datetime64", "Str0", "Uint32", and "Uint64" as a dtype will now raise a TypeError.

    (gh-19539)

    Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

    numpy.loads was deprecated in v1.15, with the recommendation that users use pickle.loads instead. ndfromtxt and mafromtxt were both deprecated in v1.17 - users should use numpy.genfromtxt instead with the appropriate value for the usemask parameter.

    (gh-19615)

    Deprecations

    Use delimiter rather than delimitor as kwarg in mrecords

    The misspelled keyword argument delimitor of numpy.ma.mrecords.fromtextfile() has been changed to delimiter, using it will emit a deprecation warning.

    (gh-19921)

    Passing boolean kth values to (arg-)partition has been deprecated

    numpy.partition and numpy.argpartition would previously accept boolean values for the kth parameter, which would subsequently be converted into integers. This behavior has now been deprecated.

    (gh-20000)

    The np.MachAr class has been deprecated

    The numpy.MachAr class and finfo.machar <numpy.finfo> attribute have been deprecated. Users are encouraged to access the property if interest directly from the corresponding numpy.finfo attribute.

    (gh-20201)

    Compatibility notes

    Distutils forces strict floating point model on clang

    NumPy now sets the -ftrapping-math option on clang to enforce correct floating point error handling for universal functions. Clang defaults to non-IEEE and C99 conform behaviour otherwise. This change (using the equivalent but newer -ffp-exception-behavior=strict) was attempted in NumPy 1.21, but was effectively never used.

    (gh-19479)

    Removed floor division support for complex types

    Floor division of complex types will now result in a TypeError

    >>> a = np.arange(10) + 1j* np.arange(10)
    >>> a // 1
    TypeError: ufunc 'floor_divide' not supported for the input types...
    

    (gh-19135)

    numpy.vectorize functions now produce the same output class as the base function

    When a function that respects numpy.ndarray subclasses is vectorized using numpy.vectorize, the vectorized function will now be subclass-safe also for cases that a signature is given (i.e., when creating a gufunc): the output class will be the same as that returned by the first call to the underlying function.

    (gh-19356)

    Python 3.7 is no longer supported

    Python support has been dropped. This is rather strict, there are changes that require Python >= 3.8.

    (gh-19665)

    str/repr of complex dtypes now include space after punctuation

    The repr of np.dtype({"names": ["a"], "formats": [int], "offsets": [2]}) is now dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}), whereas spaces where previously omitted after colons and between fields.

    The old behavior can be restored via np.set_printoptions(legacy="1.21").

    (gh-19687)

    Corrected advance in PCG64DSXM and PCG64

    Fixed a bug in the advance method of PCG64DSXM and PCG64. The bug only affects results when the step was larger than $2^{64}$ on platforms that do not support 128-bit integers(e.g., Windows and 32-bit Linux).

    (gh-20049)

    Change in generation of random 32 bit floating point variates

    There was bug in the generation of 32 bit floating point values from the uniform distribution that would result in the least significant bit of the random variate always being 0. This has been fixed.

    This change affects the variates produced by the random.Generator methods random, standard_normal, standard_exponential, and standard_gamma, but only when the dtype is specified as numpy.float32.

    (gh-20314)

    C API changes

    Masked inner-loops cannot be customized anymore

    The masked inner-loop selector is now never used. A warning will be given in the unlikely event that it was customized.

    We do not expect that any code uses this. If you do use it, you must unset the selector on newer NumPy version. Please also contact the NumPy developers, we do anticipate providing a new, more specific, mechanism.

    The customization was part of a never-implemented feature to allow for faster masked operations.

    (gh-19259)

    New Features

    NEP 49 configurable allocators

    As detailed in NEP 49, the function used for allocation of the data segment of a ndarray can be changed. The policy can be set globally or in a context. For more information see the NEP and the data_memory{.interpreted-text role="ref"} reference docs. Also add a NUMPY_WARN_IF_NO_MEM_POLICY override to warn on dangerous use of transfering ownership by setting NPY_ARRAY_OWNDATA.

    (gh-17582)

    Implementation of the NEP 47 (adopting the array API standard)

    An initial implementation of NEP47, adoption of the array API standard, has been added as numpy.array_api. The implementation is experimental and will issue a UserWarning on import, as the array API standard is still in draft state. numpy.array_api is a conforming implementation of the array API standard, which is also minimal, meaning that only those functions and behaviors that are required by the standard are implemented (see the NEP for more info). Libraries wishing to make use of the array API standard are encouraged to use numpy.array_api to check that they are only using functionality that is guaranteed to be present in standard conforming implementations.

    (gh-18585)

    Generate C/C++ API reference documentation from comments blocks is now possible

    This feature depends on Doxygen in the generation process and on Breathe to integrate it with Sphinx.

    (gh-18884)

    Assign the platform-specific c_intp precision via a mypy plugin

    The mypy plugin, introduced in numpy/numpy#17843, has again been expanded: the plugin now is now responsible for setting the platform-specific precision of numpy.ctypeslib.c_intp, the latter being used as data type for various numpy.ndarray.ctypes attributes.

    Without the plugin, aforementioned type will default to ctypes.c_int64.

    To enable the plugin, one must add it to their mypy configuration file:

    [mypy]
    plugins = numpy.typing.mypy_plugin
    

    (gh-19062)

    Add NEP 47-compatible dlpack support

    Add a ndarray.__dlpack__() method which returns a dlpack C structure wrapped in a PyCapsule. Also add a np._from_dlpack(obj) function, where obj supports __dlpack__(), and returns an ndarray.

    (gh-19083)

    keepdims optional argument added to numpy.argmin, numpy.argmax

    keepdims argument is added to numpy.argmin, numpy.argmax. If set to True, the axes which are reduced are left in the result as dimensions with size one. The resulting array has the same number of dimensions and will broadcast with the input array.

    (gh-19211)

    bit_count to compute the number of 1-bits in an integer

    Computes the number of 1-bits in the absolute value of the input. This works on all the numpy integer types. Analogous to the builtin int.bit_count or popcount in C++.

    >>> np.uint32(1023).bit_count()
    10
    >>> np.int32(-127).bit_count()
    7
    

    (gh-19355)

    The ndim and axis attributes have been added to numpy.AxisError

    The ndim and axis parameters are now also stored as attributes within each numpy.AxisError instance.

    (gh-19459)

    Preliminary support for windows/arm64 target

    numpy added support for windows/arm64 target. Please note OpenBLAS support is not yet available for windows/arm64 target.

    (gh-19513)

    Added support for LoongArch

    LoongArch is a new instruction set, numpy compilation failure on LoongArch architecture, so add the commit.

    (gh-19527)

    A .clang-format file has been added

    Clang-format is a C/C++ code formatter, together with the added .clang-format file, it produces code close enough to the NumPy C_STYLE_GUIDE for general use. Clang-format version 12+ is required due to the use of several new features, it is available in Fedora 34 and Ubuntu Focal among other distributions.

    (gh-19754)

    is_integer is now available to numpy.floating and numpy.integer

    Based on its counterpart in Python float and int, the numpy floating point and integer types now support float.is_integer. Returns True if the number is finite with integral value, and False otherwise.

    >>> np.float32(-2.0).is_integer()
    True
    >>> np.float64(3.2).is_integer()
    False
    >>> np.int32(-2).is_integer()
    True
    

    (gh-19803)

    Symbolic parser for Fortran dimension specifications

    A new symbolic parser has been added to f2py in order to correctly parse dimension specifications. The parser is the basis for future improvements and provides compatibility with Draft Fortran 202x.

    (gh-19805)

    ndarray, dtype and number are now runtime-subscriptable

    Mimicking PEP-585, the numpy.ndarray, numpy.dtype and numpy.number classes are now subscriptable for python 3.9 and later. Consequently, expressions that were previously only allowed in .pyi stub files or with the help of from __future__ import annotations are now also legal during runtime.

    >>> import numpy as np
    >>> from typing import Any
    
    >>> np.ndarray[Any, np.dtype[np.float64]]
    numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
    

    (gh-19879)

    Improvements

    ctypeslib.load_library can now take any path-like object

    All parameters in the can now take any python:path-like object{.interpreted-text role="term"}. This includes the likes of strings, bytes and objects implementing the __fspath__<os.PathLike.__fspath__>{.interpreted-text role="meth"} protocol.

    (gh-17530)

    Add smallest_normal and smallest_subnormal attributes to finfo

    The attributes smallest_normal and smallest_subnormal are available as an extension of finfo class for any floating-point data type. To use these new attributes, write np.finfo(np.float64).smallest_normal or np.finfo(np.float64).smallest_subnormal.

    (gh-18536)

    numpy.linalg.qr accepts stacked matrices as inputs

    numpy.linalg.qr is able to produce results for stacked matrices as inputs. Moreover, the implementation of QR decomposition has been shifted to C from Python.

    (gh-19151)

    numpy.fromregex now accepts os.PathLike implementations

    numpy.fromregex now accepts objects implementing the __fspath__<os.PathLike> protocol, e.g. pathlib.Path.

    (gh-19680)

    Add new methods for quantile and percentile

    quantile and percentile now have have a method= keyword argument supporting 13 different methods. This replaces the interpolation= keyword argument.

    The methods are now aligned with nine methods which can be found in scientific literature and the R language. The remaining methods are the previous discontinuous variations of the default "linear" one.

    Please see the documentation of numpy.percentile for more information.

    (gh-19857)

    Missing parameters have been added to the nan<x> functions

    A number of the nan<x> functions previously lacked parameters that were present in their <x>-based counterpart, e.g. the where parameter was present in numpy.mean but absent from numpy.nanmean.

    The following parameters have now been added to the nan<x> functions:

    • nanmin: initial & where
    • nanmax: initial & where
    • nanargmin: keepdims & out
    • nanargmax: keepdims & out
    • nansum: initial & where
    • nanprod: initial & where
    • nanmean: where
    • nanvar: where
    • nanstd: where

    (gh-20027)

    Annotating the main Numpy namespace

    Starting from the 1.20 release, PEP 484 type annotations have been included for parts of the NumPy library; annotating the remaining functions being a work in progress. With the release of 1.22 this process has been completed for the main NumPy namespace, which is now fully annotated.

    Besides the main namespace, a limited number of sub-packages contain annotations as well. This includes, among others, numpy.testing, numpy.linalg and numpy.random (available since 1.21).

    (gh-20217)

    Vectorize umath module using AVX-512

    By leveraging Intel Short Vector Math Library (SVML), 18 umath functions (exp2, log2, log10, expm1, log1p, cbrt, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh, arctanh) are vectorized using AVX-512 instruction set for both single and double precision implementations. This change is currently enabled only for Linux users and on processors with AVX-512 instruction set. It provides an average speed up of 32x and 14x for single and double precision functions respectively.

    (gh-19478)

    OpenBLAS v0.3.17

    Update the OpenBLAS used in testing and in wheels to v0.3.17

    (gh-19462)

    Checksums

    MD5

    824c4112f63bb1059703524f2ea39a7c  numpy-1.22.0rc2-cp310-cp310-macosx_10_9_universal2.whl
    f97f47414e7fdc8bad39fa87d9248e47  numpy-1.22.0rc2-cp310-cp310-macosx_10_9_x86_64.whl
    7c184eb9216073b516733cfe5b5d65aa  numpy-1.22.0rc2-cp310-cp310-macosx_11_0_arm64.whl
    43dd129a673e3346fa37d1b466da3252  numpy-1.22.0rc2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    236e5f9cb23a328a8c6ee8735c49f057  numpy-1.22.0rc2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    40e7f1b4a8912d757f02fc07cea3d920  numpy-1.22.0rc2-cp310-cp310-win_amd64.whl
    9c3a547153ba9b2425fad1bca20e7893  numpy-1.22.0rc2-cp38-cp38-macosx_10_9_universal2.whl
    71254fdd07cd21554ff259f773387b36  numpy-1.22.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
    5f19bc28ccbadaf467a98b4be99eec26  numpy-1.22.0rc2-cp38-cp38-macosx_11_0_arm64.whl
    35e8024c21aec5b166666a25cc58d1c4  numpy-1.22.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    549ef12115032ea5acc505e426e1c1ee  numpy-1.22.0rc2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b1cad86de88044c80edb5768a5d1a636  numpy-1.22.0rc2-cp38-cp38-win32.whl
    dfddc47854c314fd0a08586f2a766e01  numpy-1.22.0rc2-cp38-cp38-win_amd64.whl
    eec2378e50ea4c16d6d398adc576c260  numpy-1.22.0rc2-cp39-cp39-macosx_10_9_universal2.whl
    ed6e62d63e1f5a28f8fb58407ec960f8  numpy-1.22.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
    5947f1b695955d871583d863f7f65d81  numpy-1.22.0rc2-cp39-cp39-macosx_11_0_arm64.whl
    1f07317b9b7a97f4995d1df3eddd4eef  numpy-1.22.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8c3b5fed43af5ea6d758812ff41aefd7  numpy-1.22.0rc2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ab851c749351b74de5049e06aff8c92f  numpy-1.22.0rc2-cp39-cp39-win32.whl
    351086196ee8548bc130e1597a0ed9e1  numpy-1.22.0rc2-cp39-cp39-win_amd64.whl
    920888e42e2d43393b48d67da1e98d2d  numpy-1.22.0rc2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f67b97d052658b42c6bcdcb05c212dd0  numpy-1.22.0rc2.tar.gz
    ba493e8d3e3d2cfd0c34aed057c91c46  numpy-1.22.0rc2.zip
    

    SHA256

    7bfcf46e1acc8750f623b4b1329e14be65ffadb543f4521f8e1b430d0520c81b  numpy-1.22.0rc2-cp310-cp310-macosx_10_9_universal2.whl
    81cb12f4ad3b45f7b4b49abec16ab880dea88965e3097730eb985be0e34a4d2d  numpy-1.22.0rc2-cp310-cp310-macosx_10_9_x86_64.whl
    1d5e23b15da36ddf5e2101e39b6dcd7303fddfe2454eae10d008220a358e0e83  numpy-1.22.0rc2-cp310-cp310-macosx_11_0_arm64.whl
    7e1bc4a0bf6663147d740a5a54693774c337474f98185ba7a64d330239377d39  numpy-1.22.0rc2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    d54a2a0628f8bc0e4d35865c4e98a8832529cbf0988beaa793bc001a0a7d8ee4  numpy-1.22.0rc2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a080d72182500b252f3d11821edd7bc4909e867da60a1067aad54e1e7cc66cd9  numpy-1.22.0rc2-cp310-cp310-win_amd64.whl
    0fe7e7c972bb6ae27e9f587e1504db3c0dac4dd07be86d54aab8f5539b3e5c12  numpy-1.22.0rc2-cp38-cp38-macosx_10_9_universal2.whl
    449b9a32f51829b8701f0632cb0ec994fc6a2583ee9360f49dd63ed83ae00ccd  numpy-1.22.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
    e5ba4a2828a70eb929305322e7ccab4a394dd09aebadc820fb3bab8a78a798a5  numpy-1.22.0rc2-cp38-cp38-macosx_11_0_arm64.whl
    50f171a7193796a88da1097a70bb8c972f700d0f94a981a7a96043d1d2334c28  numpy-1.22.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    56ae14a0f3b254ede5743c86641277072b0e0ac4a1b6e7903fe574856c120339  numpy-1.22.0rc2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a77afd61d5941d0439c245f29e6dd49781d1debee0441b46ac286e12a681d4db  numpy-1.22.0rc2-cp38-cp38-win32.whl
    49785892d8573135bb1cd7684b0b42803aab0a10b0e68f5f675c8030b3aa9f9c  numpy-1.22.0rc2-cp38-cp38-win_amd64.whl
    1e4220474a0a2614deb817b98ce569cf58c53cf66a168ba55eeeb9f8e3878375  numpy-1.22.0rc2-cp39-cp39-macosx_10_9_universal2.whl
    5296fb0303c8d5653f83081fe8f11d6e88ecebe77aca149e9bfe3ec68297929a  numpy-1.22.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
    4f067fe9e9acf18e6ee450854ced9d3204d8e817bcd4dcbc4db6cdc9f2ba838b  numpy-1.22.0rc2-cp39-cp39-macosx_11_0_arm64.whl
    68be281c331c9811a3fbae5990c4f8b14f7e26206869bf441314a414cb96aaa6  numpy-1.22.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    2ce70ec6ee651364e63907aca89cf55556de4e6ca9e01af3a7a6228b9b436878  numpy-1.22.0rc2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    467c2290325fa5ca82d443815a98ef10a93b31d7771a1b4e08396d1e1128c74f  numpy-1.22.0rc2-cp39-cp39-win32.whl
    b46ab9c390828933485289cc7ff5d41d612d1a9b4633ff06814fc7efc9966518  numpy-1.22.0rc2-cp39-cp39-win_amd64.whl
    e0c7009fde55f27cbec3b21c487fc7cfffcb23c2058b27b153c07a856e144e06  numpy-1.22.0rc2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f1f7c11a270959f08ca4cef566b8db5795357801f2023e512763554a563fd736  numpy-1.22.0rc2.tar.gz
    01810dc32c5ac4c895b5c0d285497e1eb52038834919f3d2eaddfb9526b20dc9  numpy-1.22.0rc2.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.22.0-changelog.rst(65.60 KB)
    numpy-1.22.0rc2.tar.gz(9.86 MB)
    numpy-1.22.0rc2.zip(10.75 MB)
    README.rst(23.34 KB)
  • v1.22.0rc1(Nov 23, 2021)

    NumPy 1.22.0 Release Notes

    NumPy 1.22.0 is a big release featuring the work of 150 contributers spread over 575 pull requests. There have been many improvements, highlights are:

    • Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
    • A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
    • NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
    • New methods for quantile, percentile, and related functions. The new methods provide a complete set of the methods commonly found in the literature.
    • A new configurable allocator for use by downstream projects.

    These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.

    The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.

    Expired deprecations

    Deprecated numeric style dtype strings have been removed

    Using the strings "Bytes0", "Datetime64", "Str0", "Uint32", and "Uint64" as a dtype will now raise a TypeError.

    (gh-19539)

    Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

    numpy.loads was deprecated in v1.15, with the recommendation that users use pickle.loads instead. ndfromtxt and mafromtxt were both deprecated in v1.17 - users should use numpy.genfromtxt instead with the appropriate value for the usemask parameter.

    (gh-19615)

    Deprecations

    Use delimiter rather than delimitor as kwarg in mrecords

    The misspelled keyword argument delimitor of numpy.ma.mrecords.fromtextfile() has been changed to delimiter, using it will emit a deprecation warning.

    (gh-19921)

    Passing boolean kth values to (arg-)partition has been deprecated

    numpy.partition and numpy.argpartition would previously accept boolean values for the kth parameter, which would subsequently be converted into integers. This behavior has now been deprecated.

    (gh-20000)

    The np.MachAr class has been deprecated

    The numpy.MachAr class and finfo.machar <numpy.finfo> attribute have been deprecated. Users are encouraged to access the property if interest directly from the corresponding numpy.finfo attribute.

    (gh-20201)

    Compatibility notes

    Distutils forces strict floating point model on clang

    NumPy now sets the -ftrapping-math option on clang to enforce correct floating point error handling for universal functions. Clang defaults to non-IEEE and C99 conform behaviour otherwise. This change (using the equivalent but newer -ffp-exception-behavior=strict) was attempted in NumPy 1.21, but was effectively never used.

    (gh-19479)

    Removed floor division support for complex types

    Floor division of complex types will now result in a TypeError

    >>> a = np.arange(10) + 1j* np.arange(10)
    >>> a // 1
    TypeError: ufunc 'floor_divide' not supported for the input types...
    

    (gh-19135)

    numpy.vectorize functions now produce the same output class as the base function

    When a function that respects numpy.ndarray subclasses is vectorized using numpy.vectorize, the vectorized function will now be subclass-safe also for cases that a signature is given (i.e., when creating a gufunc): the output class will be the same as that returned by the first call to the underlying function.

    (gh-19356)

    Python 3.7 is no longer supported

    Python support has been dropped. This is rather strict, there are changes that require Python >= 3.8.

    (gh-19665)

    str/repr of complex dtypes now include space after punctuation

    The repr of np.dtype({"names": ["a"], "formats": [int], "offsets": [2]}) is now dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}), whereas spaces where previously omitted after colons and between fields.

    The old behavior can be restored via np.set_printoptions(legacy="1.21").

    (gh-19687)

    Corrected advance in PCG64DSXM and PCG64

    Fixed a bug in the advance method of PCG64DSXM and PCG64. The bug only affects results when the step was larger than $2^{64}$ on platforms that do not support 128-bit integers(e.g., Windows and 32-bit Linux).

    (gh-20049)

    Change in generation of random 32 bit floating point variates

    There was bug in the generation of 32 bit floating point values from the uniform distribution that would result in the least significant bit of the random variate always being 0. This has been fixed.

    This change affects the variates produced by the random.Generator methods random, standard_normal, standard_exponential, and standard_gamma, but only when the dtype is specified as numpy.float32.

    (gh-20314)

    C API changes

    Masked inner-loops cannot be customized anymore

    The masked inner-loop selector is now never used. A warning will be given in the unlikely event that it was customized.

    We do not expect that any code uses this. If you do use it, you must unset the selector on newer NumPy version. Please also contact the NumPy developers, we do anticipate providing a new, more specific, mechanism.

    The customization was part of a never-implemented feature to allow for faster masked operations.

    (gh-19259)

    New Features

    NEP 49 configurable allocators

    As detailed in NEP 49, the function used for allocation of the data segment of a ndarray can be changed. The policy can be set globally or in a context. For more information see the NEP and the data_memory{.interpreted-text role="ref"} reference docs. Also add a NUMPY_WARN_IF_NO_MEM_POLICY override to warn on dangerous use of transfering ownership by setting NPY_ARRAY_OWNDATA.

    (gh-17582)

    Implementation of the NEP 47 (adopting the array API standard)

    An initial implementation of NEP 47 (adoption the array API standard) has been added as numpy.array_api. The implementation is experimental and will issue a UserWarning on import, as the array API standard is still in draft state. numpy.array_api is a conforming implementation of the array API standard, which is also minimal, meaning that only those functions and behaviors that are required by the standard are implemented (see the NEP for more info). Libraries wishing to make use of the array API standard are encouraged to use numpy.array_api to check that they are only using functionality that is guaranteed to be present in standard conforming implementations.

    (gh-18585)

    Generate C/C++ API reference documentation from comments blocks is now possible

    This feature depends on Doxygen in the generation process and on Breathe to integrate it with Sphinx.

    (gh-18884)

    Assign the platform-specific c_intp precision via a mypy plugin

    The mypy plugin, introduced in numpy/numpy#17843, has again been expanded: the plugin now is now responsible for setting the platform-specific precision of numpy.ctypeslib.c_intp, the latter being used as data type for various numpy.ndarray.ctypes attributes.

    Without the plugin, aforementioned type will default to ctypes.c_int64.

    To enable the plugin, one must add it to their mypy configuration file:

    [mypy]
    plugins = numpy.typing.mypy_plugin
    

    (gh-19062)

    Add NEP 47-compatible dlpack support

    Add a ndarray.__dlpack__() method which returns a dlpack C structure wrapped in a PyCapsule. Also add a np._from_dlpack(obj) function, where obj supports __dlpack__(), and returns an ndarray.

    (gh-19083)

    keepdims optional argument added to numpy.argmin, numpy.argmax

    keepdims argument is added to numpy.argmin, numpy.argmax. If set to True, the axes which are reduced are left in the result as dimensions with size one. The resulting array has the same number of dimensions and will broadcast with the input array.

    (gh-19211)

    bit_count to compute the number of 1-bits in an integer

    Computes the number of 1-bits in the absolute value of the input. This works on all the numpy integer types. Analogous to the builtin int.bit_count or popcount in C++.

    >>> np.uint32(1023).bit_count()
    10
    >>> np.int32(-127).bit_count()
    7
    

    (gh-19355)

    The ndim and axis attributes have been added to numpy.AxisError

    The ndim and axis parameters are now also stored as attributes within each numpy.AxisError instance.

    (gh-19459)

    Preliminary support for windows/arm64 target

    numpy added support for windows/arm64 target. Please note OpenBLAS support is not yet available for windows/arm64 target.

    (gh-19513)

    Added support for LoongArch

    LoongArch is a new instruction set, numpy compilation failure on LoongArch architecture, so add the commit.

    (gh-19527)

    A .clang-format file has been added

    Clang-format is a C/C++ code formatter, together with the added .clang-format file, it produces code close enough to the NumPy C_STYLE_GUIDE for general use. Clang-format version 12+ is required due to the use of several new features, it is available in Fedora 34 and Ubuntu Focal among other distributions.

    (gh-19754)

    is_integer is now available to numpy.floating and numpy.integer

    Based on its counterpart in Python float and int, the numpy floating point and integer types now support float.is_integer. Returns True if the number is finite with integral value, and False otherwise.

    >>> np.float32(-2.0).is_integer()
    True
    >>> np.float64(3.2).is_integer()
    False
    >>> np.int32(-2).is_integer()
    True
    

    (gh-19803)

    Symbolic parser for Fortran dimension specifications

    A new symbolic parser has been added to f2py in order to correctly parse dimension specifications. The parser is the basis for future improvements and provides compatibility with Draft Fortran 202x.

    (gh-19805)

    ndarray, dtype and number are now runtime-subscriptable

    Mimicking 585{.interpreted-text role="pep"}, the numpy.ndarray, numpy.dtype and numpy.number classes are now subscriptable for python 3.9 and later. Consequently, expressions that were previously only allowed in .pyi stub files or with the help of from __future__ import annotations are now also legal during runtime.

    >>> import numpy as np
    >>> from typing import Any
    
    >>> np.ndarray[Any, np.dtype[np.float64]]
    numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
    

    (gh-19879)

    Improvements

    ctypeslib.load_library can now take any path-like object

    All parameters in the can now take any python:path-like object{.interpreted-text role="term"}. This includes the likes of strings, bytes and objects implementing the __fspath__<os.PathLike.__fspath__>{.interpreted-text role="meth"} protocol.

    (gh-17530)

    Add smallest_normal and smallest_subnormal attributes to finfo

    The attributes smallest_normal and smallest_subnormal are available as an extension of finfo class for any floating-point data type. To use these new attributes, write np.finfo(np.float64).smallest_normal or np.finfo(np.float64).smallest_subnormal.

    (gh-18536)

    numpy.linalg.qr accepts stacked matrices as inputs

    numpy.linalg.qr is able to produce results for stacked matrices as inputs. Moreover, the implementation of QR decomposition has been shifted to C from Python.

    (gh-19151)

    numpy.fromregex now accepts os.PathLike implementations

    numpy.fromregex now accepts objects implementing the __fspath__<os.PathLike> protocol, e.g. pathlib.Path.

    (gh-19680)

    Add new methods for quantile and percentile

    quantile and percentile now have have a method= keyword argument supporting 13 different methods. This replaces the interpolation= keyword argument.

    The methods are now aligned with nine methods which can be found in scientific literature and the R language. The remaining methods are the previous discontinuous variations of the default "linear" one.

    Please see the documentation of numpy.percentile for more information.

    (gh-19857)

    Missing parameters have been added to the nan<x> functions

    A number of the nan<x> functions previously lacked parameters that were present in their <x>-based counterpart, e.g. the where parameter was present in numpy.mean but absent from numpy.nanmean.

    The following parameters have now been added to the nan<x> functions:

    • nanmin: initial & where
    • nanmax: initial & where
    • nanargmin: keepdims & out
    • nanargmax: keepdims & out
    • nansum: initial & where
    • nanprod: initial & where
    • nanmean: where
    • nanvar: where
    • nanstd: where

    (gh-20027)

    Annotating the main Numpy namespace

    Starting from the 1.20 release, PEP 484 type annotations have been included for parts of the NumPy library; annotating the remaining functions being a work in progress. With the release of 1.22 this process has been completed for the main NumPy namespace, which is now fully annotated.

    Besides the main namespace, a limited number of sub-packages contain annotations as well. This includes, among others, numpy.testing, numpy.linalg and numpy.random (available since 1.21).

    (gh-20217)

    Vectorize umath module using AVX-512

    By leveraging Intel Short Vector Math Library (SVML), 18 umath functions (exp2, log2, log10, expm1, log1p, cbrt, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh, arctanh) are vectorized using AVX-512 instruction set for both single and double precision implementations. This change is currently enabled only for Linux users and on processors with AVX-512 instruction set. It provides an average speed up of 32x and 14x for single and double precision functions respectively.

    (gh-19478)

    OpenBLAS v0.3.17

    Update the OpenBLAS used in testing and in wheels to v0.3.17

    (gh-19462)

    Checksums

    MD5

    a70dfdbb1e1dab6d5c10c5534c523288  numpy-1.22.0rc1-cp310-cp310-macosx_10_9_universal2.whl
    2cccddd30f5ec841d4ce90530f7762b0  numpy-1.22.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
    7b46c1b0f8175b03d0197059c1d3a5d3  numpy-1.22.0rc1-cp310-cp310-macosx_11_0_arm64.whl
    7adb43de081457fb9733ef4570a314e9  numpy-1.22.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    517ec9dede8b479ad986a14912fcc912  numpy-1.22.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    0379b78e387565067489943ca270ba59  numpy-1.22.0rc1-cp310-cp310-win_amd64.whl
    f582541b1e4d322519d4f091a859b2bc  numpy-1.22.0rc1-cp38-cp38-macosx_10_9_universal2.whl
    5239cc440f1353555c9e0273d4e68c91  numpy-1.22.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
    1a12742a23205cae3d2d5fda5cd8f478  numpy-1.22.0rc1-cp38-cp38-macosx_11_0_arm64.whl
    4a45e2633361c367372d6c98d4e13010  numpy-1.22.0rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    15cf27d4ac60c720aa3f36308d90deb2  numpy-1.22.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    7cc2ffcfbe0f11234f7ba6a09e32980e  numpy-1.22.0rc1-cp38-cp38-win32.whl
    64104bfd50dee174344d02506ab4c621  numpy-1.22.0rc1-cp38-cp38-win_amd64.whl
    74b7c7f59058000d8437476ab880d943  numpy-1.22.0rc1-cp39-cp39-macosx_10_9_universal2.whl
    7850ed6e906589c53b6e7187220f8dcc  numpy-1.22.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
    2a78c0df6943528302b3141e4b9b594b  numpy-1.22.0rc1-cp39-cp39-macosx_11_0_arm64.whl
    1e65939095e4e383de6b8e257136a7a9  numpy-1.22.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    281f3e861afbff12ae9d0b32d95d89bb  numpy-1.22.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f8b7d2e3b3b61894051e258b99cbb7b3  numpy-1.22.0rc1-cp39-cp39-win32.whl
    5037a963c1486d9ce2eaa3adf84ab560  numpy-1.22.0rc1-cp39-cp39-win_amd64.whl
    f82bd053250eee5dd4f35d2e4b8a8e64  numpy-1.22.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    17c532b2ccddb54595099c76ea4322b4  numpy-1.22.0rc1.tar.gz
    f1c8568e6df223541d0c647044008949  numpy-1.22.0rc1.zip
    

    SHA256

    b00d9bf43cc8975cf5e0c211d218e75a3f5ce1ae34dc84d8a489c28a0dba7848  numpy-1.22.0rc1-cp310-cp310-macosx_10_9_universal2.whl
    eb6dd744a9f94b424bf70d62b7874798ea95b6b58fb63ec651b69a46872e5bd5  numpy-1.22.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
    6759e6dafd96454be2d6dd80674293322191639400832688cd234c5f483ce1a9  numpy-1.22.0rc1-cp310-cp310-macosx_11_0_arm64.whl
    2242fa31413e40847016234485f228fa5e082b0c555d3db65fe9aa4efcfb8d8d  numpy-1.22.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    d0be0eb7df39f0e0732d73250de55e1dcc8086c23db970d5eab85dbf0713502d  numpy-1.22.0rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ccf027e3bbcd06b5c26a0196ddfc24c4d09d2001cc5d38738efff9d9ac8dee58  numpy-1.22.0rc1-cp310-cp310-win_amd64.whl
    8c5016694b9bda77cda32ebfdde34d2246978ed4c49e9baab26bcf38621b7390  numpy-1.22.0rc1-cp38-cp38-macosx_10_9_universal2.whl
    011e4c430f2e2739e0d182cb7e2b5d47adc46a8db49a788e5798805b7878c4ba  numpy-1.22.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
    b0ed56b9d7535d654d2a0478333cc08d1b9849767eafd07e1f6a3d8d90a2cad0  numpy-1.22.0rc1-cp38-cp38-macosx_11_0_arm64.whl
    6730a1495f1acedd97e82e32cca4d8dbe07b89f01f395ca02ca4a9e110d9519d  numpy-1.22.0rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    56109e7e9b205439990e90682163d8155cf5743efe65c30221ef3834621ffd3f  numpy-1.22.0rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    7dbfa0abe053afbcb9e61ec1557556e4e30c3e4b5df4ec7849bf245e8c09feec  numpy-1.22.0rc1-cp38-cp38-win32.whl
    013fa3500a6e5b3ba51401056aa9c41d83a7e737959d15f288d410f26cc33896  numpy-1.22.0rc1-cp38-cp38-win_amd64.whl
    a2dd58beb8a8266d704a76692e8eb76ff20f5b2940db7aeee216c2dbf226e5c6  numpy-1.22.0rc1-cp39-cp39-macosx_10_9_universal2.whl
    e48368972e0999af098e0a6e9a3573895fd4c3b0b2d8c5cf215b17910cd6c124  numpy-1.22.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
    2934fb435d85341efb40f9db637a203a042300afdaa49f833608df21a5d8ae30  numpy-1.22.0rc1-cp39-cp39-macosx_11_0_arm64.whl
    e981667470ae74f06cfd0d54c5fa9cd88661a27eccaac2cba505039f0b29dc2e  numpy-1.22.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    5e56515f5abb493bd32d2196ecd3ce794792419adfb7d8b4cccd4ddaf74ab924  numpy-1.22.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    21613822dd597d4645c586ac21910fded5344f843410dace91c129a38c31d8be  numpy-1.22.0rc1-cp39-cp39-win32.whl
    91bb1e29d74a90861e878b0c7bc941a1c0ac051cb4b171dc242e66953c95ca1e  numpy-1.22.0rc1-cp39-cp39-win_amd64.whl
    0ebb646ef72a2348036ed1692e6bb3f3dd4f8d026681b7168a9ac988d9832c27  numpy-1.22.0rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    d54616321316987e69cb49d76cec8750d9d0160a32f5f5e71ff3f94b010ebc5e  numpy-1.22.0rc1.tar.gz
    bc991b3f8ea7c0f6703df2bc23c098cfe6f1a3a5e8a3a901eb6a5619275d53ff  numpy-1.22.0rc1.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.22.0-changelog.rst(64.14 KB)
    numpy-1.22.0rc1.tar.gz(9.85 MB)
    numpy-1.22.0rc1.zip(10.75 MB)
    README.rst(23.33 KB)
  • v1.21.4(Nov 5, 2021)

    NumPy 1.21.4 Release Notes

    The NumPy 1.21.4 is a maintenance release that fixes a few bugs discovered after 1.21.3. The most important fix here is a fix for the NumPy header files to make them work for both x86_64 and M1 hardware when included in the Mac universal2 wheels. Previously, the header files only worked for M1 and this caused problems for folks building x86_64 extensions. This problem was not seen before Python 3.10 because there were thin wheels for x86_64 that had precedence. This release also provides thin x86_64 Mac wheels for Python 3.10.

    The Python versions supported in this release are 3.7-3.10. If you want to compile your own version using gcc-11, you will need to use gcc-11.2+ to avoid problems.

    Contributors

    A total of 7 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Bas van Beek
    • Charles Harris
    • Isuru Fernando
    • Matthew Brett
    • Sayed Adel
    • Sebastian Berg
    • 傅立业(Chris Fu) +

    Pull requests merged

    A total of 9 pull requests were merged for this release.

    • #20278: BUG: Fix shadowed reference of dtype in type stub
    • #20293: BUG: Fix headers for universal2 builds
    • #20294: BUG: VOID_nonzero could sometimes mutate alignment flag
    • #20295: BUG: Do not use nonzero fastpath on unaligned arrays
    • #20296: BUG: Distutils patch to allow for 2 as a minor version (!)
    • #20297: BUG, SIMD: Fix 64-bit/8-bit integer division by a scalar
    • #20298: BUG, SIMD: Workaround broadcasting SIMD 64-bit integers on MSVC...
    • #20300: REL: Prepare for the NumPy 1.21.4 release.
    • #20302: TST: Fix a Arrayterator typing test failure

    Checksums

    MD5

    95486a3ed027c926fb3fc279db6d843e  numpy-1.21.4-cp310-cp310-macosx_10_9_universal2.whl
    9f57fad74762f7665669af33583a3dc9  numpy-1.21.4-cp310-cp310-macosx_10_9_x86_64.whl
    719a9053aef01a067ce44ede2281eef9  numpy-1.21.4-cp310-cp310-macosx_11_0_arm64.whl
    72035d101774fd03beff391927f59aa9  numpy-1.21.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    5813e7a378a6e3f5c269c23f61eff4d9  numpy-1.21.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b88a1bc4f08dfb154d5a07d15e387af6  numpy-1.21.4-cp310-cp310-win_amd64.whl
    f0cc946d2f4ab4df7cc7e0cc8cfd429e  numpy-1.21.4-cp37-cp37m-macosx_10_9_x86_64.whl
    1234643306ce481f0e5f801ddf3f1099  numpy-1.21.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    b9208ce1695ba61ab2932c7ce7285d1d  numpy-1.21.4-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    9804fe2011618bf2d7b8d92f6860b2e3  numpy-1.21.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    2ad3a06f974acd61326fd66c098df5bc  numpy-1.21.4-cp37-cp37m-win32.whl
    172301389f1532b2d9130362580e1e22  numpy-1.21.4-cp37-cp37m-win_amd64.whl
    a037bf88979ae0d4699a0cdce92bbab3  numpy-1.21.4-cp38-cp38-macosx_10_9_universal2.whl
    ba94609688f575cc8dce84f1512db116  numpy-1.21.4-cp38-cp38-macosx_10_9_x86_64.whl
    c78edc0ae8c9a5d8d0f9e3eb6dabd0b3  numpy-1.21.4-cp38-cp38-macosx_11_0_arm64.whl
    d683b6f6af46806391579d528a040451  numpy-1.21.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    df631f776716aeb3fd705f3659599b9e  numpy-1.21.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    b1cbca49d24c7ba43d377feb425afdce  numpy-1.21.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8b5c214bc0f060dbb0287c15dde4673d  numpy-1.21.4-cp38-cp38-win32.whl
    2307cf9f3c02f6cdad448a681c272974  numpy-1.21.4-cp38-cp38-win_amd64.whl
    fc02b5a068e29b2dd2de19c7ddd69926  numpy-1.21.4-cp39-cp39-macosx_10_9_universal2.whl
    f16068540001de8a3d8f096830c97ea2  numpy-1.21.4-cp39-cp39-macosx_10_9_x86_64.whl
    80562c39cfbdf1af9bb43b2ea5e45b6d  numpy-1.21.4-cp39-cp39-macosx_11_0_arm64.whl
    6c103bec3085e5a6ea92cf7f6e4189ab  numpy-1.21.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    9d715ba5f7596a39eb631f2dae85d203  numpy-1.21.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    8b8cf8c7b093419ff75ed1dd2eaa18ae  numpy-1.21.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    404200b858b7addd03f6cdd5a484d30a  numpy-1.21.4-cp39-cp39-win32.whl
    cdab6a1bf1b86021526d08a60219a6ad  numpy-1.21.4-cp39-cp39-win_amd64.whl
    70ca6b591e844fdcb8c22175f094d3b4  numpy-1.21.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    06019c1116b3e2791bd507f898257e7f  numpy-1.21.4.tar.gz
    b3c4477a027d5b6fba5e1065064fd076  numpy-1.21.4.zip
    

    SHA256

    8890b3360f345e8360133bc078d2dacc2843b6ee6059b568781b15b97acbe39f  numpy-1.21.4-cp310-cp310-macosx_10_9_universal2.whl
    69077388c5a4b997442b843dbdc3a85b420fb693ec8e33020bb24d647c164fa5  numpy-1.21.4-cp310-cp310-macosx_10_9_x86_64.whl
    e89717274b41ebd568cd7943fc9418eeb49b1785b66031bc8a7f6300463c5898  numpy-1.21.4-cp310-cp310-macosx_11_0_arm64.whl
    0b78ecfa070460104934e2caf51694ccd00f37d5e5dbe76f021b1b0b0d221823  numpy-1.21.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    615d4e328af7204c13ae3d4df7615a13ff60a49cb0d9106fde07f541207883ca  numpy-1.21.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    1403b4e2181fc72664737d848b60e65150f272fe5a1c1cbc16145ed43884065a  numpy-1.21.4-cp310-cp310-win_amd64.whl
    74b85a17528ca60cf98381a5e779fc0264b4a88b46025e6bcbe9621f46bb3e63  numpy-1.21.4-cp37-cp37m-macosx_10_9_x86_64.whl
    92aafa03da8658609f59f18722b88f0a73a249101169e28415b4fa148caf7e41  numpy-1.21.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    5d95668e727c75b3f5088ec7700e260f90ec83f488e4c0aaccb941148b2cd377  numpy-1.21.4-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    f5162ec777ba7138906c9c274353ece5603646c6965570d82905546579573f73  numpy-1.21.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    81225e58ef5fce7f1d80399575576fc5febec79a8a2742e8ef86d7b03beef49f  numpy-1.21.4-cp37-cp37m-win32.whl
    32fe5b12061f6446adcbb32cf4060a14741f9c21e15aaee59a207b6ce6423469  numpy-1.21.4-cp37-cp37m-win_amd64.whl
    c449eb870616a7b62e097982c622d2577b3dbc800aaf8689254ec6e0197cbf1e  numpy-1.21.4-cp38-cp38-macosx_10_9_universal2.whl
    2e4ed57f45f0aa38beca2a03b6532e70e548faf2debbeb3291cfc9b315d9be8f  numpy-1.21.4-cp38-cp38-macosx_10_9_x86_64.whl
    1247ef28387b7bb7f21caf2dbe4767f4f4175df44d30604d42ad9bd701ebb31f  numpy-1.21.4-cp38-cp38-macosx_11_0_arm64.whl
    34f3456f530ae8b44231c63082c8899fe9c983fd9b108c997c4b1c8c2d435333  numpy-1.21.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    4c9c23158b87ed0e70d9a50c67e5c0b3f75bcf2581a8e34668d4e9d7474d76c6  numpy-1.21.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    e4799be6a2d7d3c33699a6f77201836ac975b2e1b98c2a07f66a38f499cb50ce  numpy-1.21.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    bc988afcea53e6156546e5b2885b7efab089570783d9d82caf1cfd323b0bb3dd  numpy-1.21.4-cp38-cp38-win32.whl
    170b2a0805c6891ca78c1d96ee72e4c3ed1ae0a992c75444b6ab20ff038ba2cd  numpy-1.21.4-cp38-cp38-win_amd64.whl
    fde96af889262e85aa033f8ee1d3241e32bf36228318a61f1ace579df4e8170d  numpy-1.21.4-cp39-cp39-macosx_10_9_universal2.whl
    c885bfc07f77e8fee3dc879152ba993732601f1f11de248d4f357f0ffea6a6d4  numpy-1.21.4-cp39-cp39-macosx_10_9_x86_64.whl
    9e6f5f50d1eff2f2f752b3089a118aee1ea0da63d56c44f3865681009b0af162  numpy-1.21.4-cp39-cp39-macosx_11_0_arm64.whl
    ad010846cdffe7ec27e3f933397f8a8d6c801a48634f419e3d075db27acf5880  numpy-1.21.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    c74c699b122918a6c4611285cc2cad4a3aafdb135c22a16ec483340ef97d573c  numpy-1.21.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    9864424631775b0c052f3bd98bc2712d131b3e2cd95d1c0c68b91709170890b0  numpy-1.21.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    b1e2312f5b8843a3e4e8224b2b48fe16119617b8fc0a54df8f50098721b5bed2  numpy-1.21.4-cp39-cp39-win32.whl
    e3c3e990274444031482a31280bf48674441e0a5b55ddb168f3a6db3e0c38ec8  numpy-1.21.4-cp39-cp39-win_amd64.whl
    a3deb31bc84f2b42584b8c4001c85d1934dbfb4030827110bc36bfd11509b7bf  numpy-1.21.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    5d412381aa489b8be82ac5c6a9e99c3eb3f754245ad3f90ab5c339d92f25fb47  numpy-1.21.4.tar.gz
    e6c76a87633aa3fa16614b61ccedfae45b91df2767cf097aa9c933932a7ed1e0  numpy-1.21.4.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.21.4-changelog.rst(1.34 KB)
    numpy-1.21.4.tar.gz(9.31 MB)
    numpy-1.21.4.zip(10.15 MB)
    README.rst(8.60 KB)
  • v1.21.3(Oct 20, 2021)

    NumPy 1.21.3 Release Notes

    The NumPy 1.21.3 is a maintenance release the fixes a few bugs discovered after 1.21.2. It also provides 64 bit Python 3.10.0 wheels. Note a few oddities about Python 3.10:

    • There are no 32 bit wheels for Windows, Mac, or Linux.
    • The Mac Intel builds are only available in universal2 wheels.

    The Python versions supported in this release are 3.7-3.10. If you want to compile your own version using gcc-11 you will need to use gcc-11.2+ to avoid problems.

    Contributors

    A total of 7 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Aaron Meurer
    • Bas van Beek
    • Charles Harris
    • Developer-Ecosystem-Engineering +
    • Kevin Sheppard
    • Sebastian Berg
    • Warren Weckesser

    Pull requests merged

    A total of 8 pull requests were merged for this release.

    • #19745: ENH: Add dtype-support to 3 `generic/ndarray methods
    • #19955: BUG: Resolve Divide by Zero on Apple silicon + test failures...
    • #19958: MAINT: Mark type-check-only ufunc subclasses as ufunc aliases...
    • #19994: BUG: np.tan(np.inf) test failure
    • #20080: BUG: Correct incorrect advance in PCG with emulated int128
    • #20081: BUG: Fix NaT handling in the PyArray_CompareFunc for datetime...
    • #20082: DOC: Ensure that we add documentation also as to the dict for...
    • #20106: BUG: core: result_type(0, np.timedelta64(4)) would seg. fault.

    Checksums

    MD5

    9acea9630856659ba48fdb582ecc37b4  numpy-1.21.3-cp310-cp310-macosx_10_9_universal2.whl
    a70f80a4e74a3153a8307c4f0ea8d13d  numpy-1.21.3-cp310-cp310-macosx_11_0_arm64.whl
    13cfe83efd261ea1c3d1eb02c1d3af83  numpy-1.21.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8576bfd867834182269f72abbaa2e81e  numpy-1.21.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    8ac48f503f1e22c0c2b5d056772aca27  numpy-1.21.3-cp310-cp310-win_amd64.whl
    cbe0d0d7623de3c2c7593f673d1a880a  numpy-1.21.3-cp37-cp37m-macosx_10_9_x86_64.whl
    0967b18baba13e511c7eb48902a62b39  numpy-1.21.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    da54c9566f3e3f8c7d60efebfdf7e1ae  numpy-1.21.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    0aa000f3c10cf74bf47770577384b5c8  numpy-1.21.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    5683501bf91be25c53c52e3b083098c3  numpy-1.21.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    89e15d979533f8a314e0ab0648ee7153  numpy-1.21.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    a093fea475b5ed18bd21b3c79e68e388  numpy-1.21.3-cp37-cp37m-win32.whl
    f906001213ed0902b1aecfaa12224e94  numpy-1.21.3-cp37-cp37m-win_amd64.whl
    88a2cd378412220d618473dd273baf04  numpy-1.21.3-cp38-cp38-macosx_10_9_universal2.whl
    1bc55202f604e30f338bc2ed27b561bc  numpy-1.21.3-cp38-cp38-macosx_10_9_x86_64.whl
    9555dc6de8748958434e8f2feba98494  numpy-1.21.3-cp38-cp38-macosx_11_0_arm64.whl
    93ad32cc87866e9242156bdadc61e5f5  numpy-1.21.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    7cb0b7dd6aee667ecdccae1829260186  numpy-1.21.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    34e6f5f9e9534ef8772f024170c2bd2d  numpy-1.21.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    54e6abfb8f600de2ccd1649b1fca820b  numpy-1.21.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    260ba58f2dc64e779eac7318ec92f36c  numpy-1.21.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    889202c6bdaf8c1ae0803925e9e1a8f7  numpy-1.21.3-cp38-cp38-win32.whl
    980303a7e6317faf9a56ba8fc80795d9  numpy-1.21.3-cp38-cp38-win_amd64.whl
    44d6bd26fb910710ab4002d0028c9020  numpy-1.21.3-cp39-cp39-macosx_10_9_universal2.whl
    6f5b02152bd0b08a77b79657788ce59c  numpy-1.21.3-cp39-cp39-macosx_10_9_x86_64.whl
    ad05d5c412d15e7880cd65cc6cdd4aac  numpy-1.21.3-cp39-cp39-macosx_11_0_arm64.whl
    5b61a91221931af4a78c3bd20925a91f  numpy-1.21.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    df7344ae04c5a54249fa1b63a256ce61  numpy-1.21.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    c653a096da47b64b42e8f1536a21f7d4  numpy-1.21.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    e0d35451ba1c37f96e032bc6f75ccdf7  numpy-1.21.3-cp39-cp39-win32.whl
    b2e1dc59b6fa224ce11728d94be740a6  numpy-1.21.3-cp39-cp39-win_amd64.whl
    8ce925a0fcbc1062985026215d369276  numpy-1.21.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    b8e6b7165f105bde0b45cd9ae34bfe20  numpy-1.21.3.tar.gz
    59d986f5ccf3edfb7d4d14949c6666ed  numpy-1.21.3.zip
    

    SHA256

    508b0b513fa1266875524ba8a9ecc27b02ad771fe1704a16314dc1a816a68737  numpy-1.21.3-cp310-cp310-macosx_10_9_universal2.whl
    5dfe9d6a4c39b8b6edd7990091fea4f852888e41919d0e6722fe78dd421db0eb  numpy-1.21.3-cp310-cp310-macosx_11_0_arm64.whl
    8a10968963640e75cc0193e1847616ab4c718e83b6938ae74dea44953950f6b7  numpy-1.21.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    49c6249260890e05b8111ebfc391ed58b3cb4b33e63197b2ec7f776e45330721  numpy-1.21.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f8f4625536926a155b80ad2bbff44f8cc59e9f2ad14cdda7acf4c135b4dc8ff2  numpy-1.21.3-cp310-cp310-win_amd64.whl
    e54af82d68ef8255535a6cdb353f55d6b8cf418a83e2be3569243787a4f4866f  numpy-1.21.3-cp37-cp37m-macosx_10_9_x86_64.whl
    f41b018f126aac18583956c54544db437f25c7ee4794bcb23eb38bef8e5e192a  numpy-1.21.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    50cd26b0cf6664cb3b3dd161ba0a09c9c1343db064e7c69f9f8b551f5104d654  numpy-1.21.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    4cc9b512e9fb590797474f58b7f6d1f1b654b3a94f4fa8558b48ca8b3cfc97cf  numpy-1.21.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    88a5d6b268e9ad18f3533e184744acdaa2e913b13148160b1152300c949bbb5f  numpy-1.21.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    3c09418a14471c7ae69ba682e2428cae5b4420a766659605566c0fa6987f6b7e  numpy-1.21.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    90bec6a86b348b4559b6482e2b684db4a9a7eed1fa054b86115a48d58fbbf62a  numpy-1.21.3-cp37-cp37m-win32.whl
    043e83bfc274649c82a6f09836943e4a4aebe5e33656271c7dbf9621dd58b8ec  numpy-1.21.3-cp37-cp37m-win_amd64.whl
    75621882d2230ab77fb6a03d4cbccd2038511491076e7964ef87306623aa5272  numpy-1.21.3-cp38-cp38-macosx_10_9_universal2.whl
    188031f833bbb623637e66006cf75e933e00e7231f67e2b45cf8189612bb5dc3  numpy-1.21.3-cp38-cp38-macosx_10_9_x86_64.whl
    160ccc1bed3a8371bf0d760971f09bfe80a3e18646620e9ded0ad159d9749baa  numpy-1.21.3-cp38-cp38-macosx_11_0_arm64.whl
    29fb3dcd0468b7715f8ce2c0c2d9bbbaf5ae686334951343a41bd8d155c6ea27  numpy-1.21.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    32437f0b275c1d09d9c3add782516413e98cd7c09e6baf4715cbce781fc29912  numpy-1.21.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    e606e6316911471c8d9b4618e082635cfe98876007556e89ce03d52ff5e8fcf0  numpy-1.21.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a99a6b067e5190ac6d12005a4d85aa6227c5606fa93211f86b1dafb16233e57d  numpy-1.21.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    dde972a1e11bb7b702ed0e447953e7617723760f420decb97305e66fb4afc54f  numpy-1.21.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    fe52dbe47d9deb69b05084abd4b0df7abb39a3c51957c09f635520abd49b29dd  numpy-1.21.3-cp38-cp38-win32.whl
    75eb7cadc8da49302f5b659d40ba4f6d94d5045fbd9569c9d058e77b0514c9e4  numpy-1.21.3-cp38-cp38-win_amd64.whl
    2a6ee9620061b2a722749b391c0d80a0e2ae97290f1b32e28d5a362e21941ee4  numpy-1.21.3-cp39-cp39-macosx_10_9_universal2.whl
    5c4193f70f8069550a1788bd0cd3268ab7d3a2b70583dfe3b2e7f421e9aace06  numpy-1.21.3-cp39-cp39-macosx_10_9_x86_64.whl
    28f15209fb535dd4c504a7762d3bc440779b0e37d50ed810ced209e5cea60d96  numpy-1.21.3-cp39-cp39-macosx_11_0_arm64.whl
    c6c2d535a7beb1f8790aaa98fd089ceab2e3dd7ca48aca0af7dc60e6ef93ffe1  numpy-1.21.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    bffa2eee3b87376cc6b31eee36d05349571c236d1de1175b804b348dc0941e3f  numpy-1.21.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    cc14e7519fab2a4ed87d31f99c31a3796e4e1fe63a86ebdd1c5a1ea78ebd5896  numpy-1.21.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    dd0482f3fc547f1b1b5d6a8b8e08f63fdc250c58ce688dedd8851e6e26cff0f3  numpy-1.21.3-cp39-cp39-win32.whl
    300321e3985c968e3ae7fbda187237b225f3ffe6528395a5b7a5407f73cf093e  numpy-1.21.3-cp39-cp39-win_amd64.whl
    98339aa9911853f131de11010f6dd94c8cec254d3d1f7261528c3b3e3219f139  numpy-1.21.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    d0bba24083c01ae43457514d875f10d9ce4c1125d55b1e2573277b2410f2d068  numpy-1.21.3.tar.gz
    63571bb7897a584ca3249c86dd01c10bcb5fe4296e3568b2e9c1a55356b6410e  numpy-1.21.3.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.21.3-changelog.rst(1.29 KB)
    numpy-1.21.3.tar.gz(8.99 MB)
    numpy-1.21.3.zip(9.79 MB)
    README.rst(9.05 KB)
  • v1.21.2(Aug 15, 2021)

    NumPy 1.21.2 Release Notes

    The NumPy 1.21.2 is maintenance release that fixes bugs discovered after 1.21.1. It also provides 64 bit manylinux Python 3.10.0rc1 wheels for downstream testing. Note that Python 3.10 is not yet final. There is also preliminary support for Windows on ARM64 builds, but there is no OpenBLAS for that platform and no wheels are available.

    The Python versions supported for this release are 3.7-3.9. The 1.21.x series is compatible with Python 3.10.0rc1 and Python 3.10 will be officially supported after it is released. The previous problems with gcc-11.1 have been fixed by gcc-11.2, check your version if you are using gcc-11.

    Contributors

    A total of 10 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Bas van Beek
    • Carl Johnsen +
    • Charles Harris
    • Gwyn Ciesla +
    • Matthieu Dartiailh
    • Matti Picus
    • Niyas Sait +
    • Ralf Gommers
    • Sayed Adel
    • Sebastian Berg

    Pull requests merged

    A total of 18 pull requests were merged for this release.

    • #19497: MAINT: set Python version for 1.21.x to <3.11
    • #19533: BUG: Fix an issue wherein importing numpy.typing could raise
    • #19646: MAINT: Update Cython version for Python 3.10.
    • #19648: TST: Bump the python 3.10 test version from beta4 to rc1
    • #19651: TST: avoid distutils.sysconfig in runtests.py
    • #19652: MAINT: add missing dunder method to nditer type hints
    • #19656: BLD, SIMD: Fix testing extra checks when -Werror isn't applicable...
    • #19657: BUG: Remove logical object ufuncs with bool output
    • #19658: MAINT: Include .coveragerc in source distributions to support...
    • #19659: BUG: Fix bad write in masked iterator output copy paths
    • #19660: ENH: Add support for windows on arm targets
    • #19661: BUG: add base to templated arguments for platlib
    • #19662: BUG,DEP: Non-default UFunc signature/dtype usage should be deprecated
    • #19666: MAINT: Add Python 3.10 to supported versions.
    • #19668: TST,BUG: Sanitize path-separators when running runtest.py
    • #19671: BLD: load extra flags when checking for libflame
    • #19676: BLD: update circleCI docker image
    • #19677: REL: Prepare for 1.21.2 release.

    Checksums

    MD5

    c4d72c5f8aff59b5e48face558441e9f  numpy-1.21.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    eb09d0bfc0bc39ce3e323182ae779fcb  numpy-1.21.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    e0bb19ea8cc13a5152085aa42d850077  numpy-1.21.2-cp37-cp37m-macosx_10_9_x86_64.whl
    af7d21992179dfa3669a2a238b94a980  numpy-1.21.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    9acbaf0074af75d66ca8676b16cec03a  numpy-1.21.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    86b755c7ece248e5586a6a58259aa432  numpy-1.21.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    b45fbbb0ffabcabcc6dc4cf957713d45  numpy-1.21.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    6f23a3050b1482f9708d36928348d75d  numpy-1.21.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    ee45e263e6700b745c43511297385fe1  numpy-1.21.2-cp37-cp37m-win32.whl
    6f587dc9ee9ec8700e77df4f3f987911  numpy-1.21.2-cp37-cp37m-win_amd64.whl
    e500c1eae3903b7498886721b835d086  numpy-1.21.2-cp38-cp38-macosx_10_9_universal2.whl
    ddef2b45ff5526e6314205108f2e3524  numpy-1.21.2-cp38-cp38-macosx_10_9_x86_64.whl
    66b5a212ee2fe747cfc19f13dbfc2d15  numpy-1.21.2-cp38-cp38-macosx_11_0_arm64.whl
    3ebfe9bcd744c57d3d189394fbbf04de  numpy-1.21.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    155a35f990b2e673cb7b361c83fa2313  numpy-1.21.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    89e2268d8607b6b363337fafde9fe6c9  numpy-1.21.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    e13968b5f61a3b2f33d4053da8ceaaf1  numpy-1.21.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    5bede1a84624d538d97513006f97fc06  numpy-1.21.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    351b5115ee56f1b598bfa9b479a2492c  numpy-1.21.2-cp38-cp38-win32.whl
    8a36334d9d183b1ef3e4d3d23b7d0cb8  numpy-1.21.2-cp38-cp38-win_amd64.whl
    b6aee8cf57f84da10b38566bde93056c  numpy-1.21.2-cp39-cp39-macosx_10_9_universal2.whl
    20beaff42d793cb148621e0230d1b650  numpy-1.21.2-cp39-cp39-macosx_10_9_x86_64.whl
    6e348361f3b8b75267dc27f3a6530944  numpy-1.21.2-cp39-cp39-macosx_11_0_arm64.whl
    809bcd25dc485f31e2c13903d6ac748e  numpy-1.21.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    ff4256d8940c6bdce48364af37f99072  numpy-1.21.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    b8b19e6667e39feef9f7f2e030945199  numpy-1.21.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    eedae53f1929779387476e7842dc5cb3  numpy-1.21.2-cp39-cp39-win32.whl
    704f66b7ede6778283c33eea7a5b8b95  numpy-1.21.2-cp39-cp39-win_amd64.whl
    8c5d2a0172f6f6861833a355b1bc57b0  numpy-1.21.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    55c11984b0a0ae28baa118052983f355  numpy-1.21.2.tar.gz
    5638d5dae3ca387be562912312db842e  numpy-1.21.2.zip
    

    SHA256

    52a664323273c08f3b473548bf87c8145b7513afd63e4ebba8496ecd3853df13  numpy-1.21.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    51a7b9db0a2941434cd930dacaafe0fc9da8f3d6157f9d12f761bbde93f46218  numpy-1.21.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    9f2dc79c093f6c5113718d3d90c283f11463d77daa4e83aeeac088ec6a0bda52  numpy-1.21.2-cp37-cp37m-macosx_10_9_x86_64.whl
    a55e4d81c4260386f71d22294795c87609164e22b28ba0d435850fbdf82fc0c5  numpy-1.21.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    426a00b68b0d21f2deb2ace3c6d677e611ad5a612d2c76494e24a562a930c254  numpy-1.21.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    298156f4d3d46815eaf0fcf0a03f9625fc7631692bd1ad851517ab93c3168fc6  numpy-1.21.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    09858463db6dd9f78b2a1a05c93f3b33d4f65975771e90d2cf7aadb7c2f66edf  numpy-1.21.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    805459ad8baaf815883d0d6f86e45b3b0b67d823a8f3fa39b1ed9c45eaf5edf1  numpy-1.21.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    f545c082eeb09ae678dd451a1b1dbf17babd8a0d7adea02897a76e639afca310  numpy-1.21.2-cp37-cp37m-win32.whl
    b160b9a99ecc6559d9e6d461b95c8eec21461b332f80267ad2c10394b9503496  numpy-1.21.2-cp37-cp37m-win_amd64.whl
    a5109345f5ce7ddb3840f5970de71c34a0ff7fceb133c9441283bb8250f532a3  numpy-1.21.2-cp38-cp38-macosx_10_9_universal2.whl
    209666ce9d4a817e8a4597cd475b71b4878a85fa4b8db41d79fdb4fdee01dde2  numpy-1.21.2-cp38-cp38-macosx_10_9_x86_64.whl
    c01b59b33c7c3ba90744f2c695be571a3bd40ab2ba7f3d169ffa6db3cfba614f  numpy-1.21.2-cp38-cp38-macosx_11_0_arm64.whl
    e42029e184008a5fd3d819323345e25e2337b0ac7f5c135b7623308530209d57  numpy-1.21.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    7fdc7689daf3b845934d67cb221ba8d250fdca20ac0334fea32f7091b93f00d3  numpy-1.21.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    550564024dc5ceee9421a86fc0fb378aa9d222d4d0f858f6669eff7410c89bef  numpy-1.21.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    bf75d5825ef47aa51d669b03ce635ecb84d69311e05eccea083f31c7570c9931  numpy-1.21.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    a9da45b748caad72ea4a4ed57e9cd382089f33c5ec330a804eb420a496fa760f  numpy-1.21.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    e167b9805de54367dcb2043519382be541117503ce99e3291cc9b41ca0a83557  numpy-1.21.2-cp38-cp38-win32.whl
    466e682264b14982012887e90346d33435c984b7fead7b85e634903795c8fdb0  numpy-1.21.2-cp38-cp38-win_amd64.whl
    dd0e3651d210068d13e18503d75aaa45656eef51ef0b261f891788589db2cc38  numpy-1.21.2-cp39-cp39-macosx_10_9_universal2.whl
    92a0ab128b07799dd5b9077a9af075a63467d03ebac6f8a93e6440abfea4120d  numpy-1.21.2-cp39-cp39-macosx_10_9_x86_64.whl
    fde50062d67d805bc96f1a9ecc0d37bfc2a8f02b937d2c50824d186aa91f2419  numpy-1.21.2-cp39-cp39-macosx_11_0_arm64.whl
    640c1ccfd56724f2955c237b6ccce2e5b8607c3bc1cc51d3933b8c48d1da3723  numpy-1.21.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    5de64950137f3a50b76ce93556db392e8f1f954c2d8207f78a92d1f79aa9f737  numpy-1.21.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    b342064e647d099ca765f19672696ad50c953cac95b566af1492fd142283580f  numpy-1.21.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    30fc68307c0155d2a75ad19844224be0f2c6f06572d958db4e2053f816b859ad  numpy-1.21.2-cp39-cp39-win32.whl
    b5e8590b9245803c849e09bae070a8e1ff444f45e3f0bed558dd722119eea724  numpy-1.21.2-cp39-cp39-win_amd64.whl
    d96a6a7d74af56feb11e9a443150216578ea07b7450f7c05df40eec90af7f4a7  numpy-1.21.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    76af194fbc117934ec5bbe2ff15177adbd05aeed23f18ee209ed88edcd777e05  numpy-1.21.2.tar.gz
    423216d8afc5923b15df86037c6053bf030d15cc9e3224206ef868c2d63dd6dc  numpy-1.21.2.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.21.2-changelog.rst(2.35 KB)
    numpy-1.21.2.tar.gz(8.99 MB)
    numpy-1.21.2.zip(9.78 MB)
    README.rst(9.68 KB)
  • v1.21.1(Jul 18, 2021)

    NumPy 1.21.1 Release Notes

    The NumPy 1.21.1 is maintenance release that fixes bugs discovered after the 1.21.0 release and updates OpenBLAS to v0.3.17 to deal with problems on arm64.

    The Python versions supported for this release are 3.7-3.9. The 1.21.x series is compatible with development Python 3.10. Python 3.10 will be officially supported after it is released.

    :warning: There are unresolved problems compiling NumPy 1.20.0 with gcc-11.1.

    • Optimization level -O3 results in many incorrect warnings when running the tests.
    • On some hardware NumPY will hang in an infinite loop.

    Contributors

    A total of 11 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Bas van Beek
    • Charles Harris
    • Ganesh Kathiresan
    • Gregory R. Lee
    • Hugo Defois +
    • Kevin Sheppard
    • Matti Picus
    • Ralf Gommers
    • Sayed Adel
    • Sebastian Berg
    • Thomas J. Fan

    Pull requests merged

    A total of 26 pull requests were merged for this release.

    • #19311: REV,BUG: Replace NotImplemented with typing.Any
    • #19324: MAINT: Fixed the return-dtype of ndarray.real and imag
    • #19330: MAINT: Replace "dtype[Any]" with dtype in the definiton of...
    • #19342: DOC: Fix some docstrings that crash pdf generation.
    • #19343: MAINT: bump scipy-mathjax
    • #19347: BUG: Fix arr.flat.index for large arrays and big-endian machines
    • #19348: ENH: add numpy.f2py.get_include function
    • #19349: BUG: Fix reference count leak in ufunc dtype handling
    • #19350: MAINT: Annotate missing attributes of np.number subclasses
    • #19351: BUG: Fix cast safety and comparisons for zero sized voids
    • #19352: BUG: Correct Cython declaration in random
    • #19353: BUG: protect against accessing base attribute of a NULL subarray
    • #19365: BUG, SIMD: Fix detecting AVX512 features on Darwin
    • #19366: MAINT: remove print()'s in distutils template handling
    • #19390: ENH: SIMD architectures to show_config
    • #19391: BUG: Do not raise deprecation warning for all nans in unique...
    • #19392: BUG: Fix NULL special case in object-to-any cast code
    • #19430: MAINT: Use arm64-graviton2 for testing on travis
    • #19495: BUILD: update OpenBLAS to v0.3.17
    • #19496: MAINT: Avoid unicode characters in division SIMD code comments
    • #19499: BUG, SIMD: Fix infinite loop during count non-zero on GCC-11
    • #19500: BUG: fix a numpy.npiter leak in npyiter_multi_index_set
    • #19501: TST: Fix a GenericAlias test failure for python 3.9.0
    • #19502: MAINT: Start testing with Python 3.10.0b3.
    • #19503: MAINT: Add missing dtype overloads for object- and ctypes-based...
    • #19510: REL: Prepare for NumPy 1.21.1 release.

    Checksums

    MD5

    d88af78c155cb92ce5535724ed13ed73  numpy-1.21.1-cp37-cp37m-macosx_10_9_x86_64.whl
    946e54ec9d174ec90db8ae07a4c4ae2f  numpy-1.21.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    84d7f8534fa3ce1a8c2e2eab18e514de  numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    2e256d7862047967f2a7dbff8b8e9d6c  numpy-1.21.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    4887ff09cc0652f3f1d9e0f40d1add63  numpy-1.21.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    bbe00679ce0ae484bb46776f64e00e32  numpy-1.21.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    b8eff5ba6bb920f3e65409abcfe7a55e  numpy-1.21.1-cp37-cp37m-win32.whl
    d6ab781ad4537a818663a37392bdf647  numpy-1.21.1-cp37-cp37m-win_amd64.whl
    f974f7a90567e082b16817e1218eb059  numpy-1.21.1-cp38-cp38-macosx_10_9_universal2.whl
    37fb814042195516db4c5eedc23f65ef  numpy-1.21.1-cp38-cp38-macosx_10_9_x86_64.whl
    2840e0ed51c8ebfb6fded7f1acfed810  numpy-1.21.1-cp38-cp38-macosx_11_0_arm64.whl
    d87ed548450f324a3a6a3a230991e90a  numpy-1.21.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    e5e0e271fb18986887920f24b9ad8ec3  numpy-1.21.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    f060727f195388df3f3c1e2c43a8d247  numpy-1.21.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    26b0cc05d6f59241f401c16a6fe9300e  numpy-1.21.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    dac4489fdaeffd24d402a555e61b4087  numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    c248a8f07bb458660274eab769dcc1e2  numpy-1.21.1-cp38-cp38-win32.whl
    52386872b66b108de80b5447d0e3f6b1  numpy-1.21.1-cp38-cp38-win_amd64.whl
    1a730aa7303421f31c2bca5a343010bb  numpy-1.21.1-cp39-cp39-macosx_10_9_universal2.whl
    141701393752d472456d4a15f9a554e4  numpy-1.21.1-cp39-cp39-macosx_10_9_x86_64.whl
    33a9c001675f708aebc06f0a653378c1  numpy-1.21.1-cp39-cp39-macosx_11_0_arm64.whl
    6b9482c5090f532285313ad2cf48d319  numpy-1.21.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    94fa7591ad4e51a85cb17bcec170b986  numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    f580b2ce2fb9cead163bab3f1d88fba7  numpy-1.21.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    238930d877b5d8a012b5b1bbc994ebb1  numpy-1.21.1-cp39-cp39-win32.whl
    4014c63ac2a1c3e1df95f76feb14816e  numpy-1.21.1-cp39-cp39-win_amd64.whl
    7cff22c1a04fdee710d38bd9468edbf1  numpy-1.21.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    033726e7ec59eea6b23307dcec35a37b  numpy-1.21.1.tar.gz
    1d016e05851a4ba85307f3246eb569aa  numpy-1.21.1.zip
    

    SHA256

    38e8648f9449a549a7dfe8d8755a5979b45b3538520d1e735637ef28e8c2dc50  numpy-1.21.1-cp37-cp37m-macosx_10_9_x86_64.whl
    fd7d7409fa643a91d0a05c7554dd68aa9c9bb16e186f6ccfe40d6e003156e33a  numpy-1.21.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    a75b4498b1e93d8b700282dc8e655b8bd559c0904b3910b144646dbbbc03e062  numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    1412aa0aec3e00bc23fbb8664d76552b4efde98fb71f60737c83efbac24112f1  numpy-1.21.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    e46ceaff65609b5399163de5893d8f2a82d3c77d5e56d976c8b5fb01faa6b671  numpy-1.21.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    c6a2324085dd52f96498419ba95b5777e40b6bcbc20088fddb9e8cbb58885e8e  numpy-1.21.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    73101b2a1fef16602696d133db402a7e7586654682244344b8329cdcbbb82172  numpy-1.21.1-cp37-cp37m-win32.whl
    7a708a79c9a9d26904d1cca8d383bf869edf6f8e7650d85dbc77b041e8c5a0f8  numpy-1.21.1-cp37-cp37m-win_amd64.whl
    95b995d0c413f5d0428b3f880e8fe1660ff9396dcd1f9eedbc311f37b5652e16  numpy-1.21.1-cp38-cp38-macosx_10_9_universal2.whl
    635e6bd31c9fb3d475c8f44a089569070d10a9ef18ed13738b03049280281267  numpy-1.21.1-cp38-cp38-macosx_10_9_x86_64.whl
    4a3d5fb89bfe21be2ef47c0614b9c9c707b7362386c9a3ff1feae63e0267ccb6  numpy-1.21.1-cp38-cp38-macosx_11_0_arm64.whl
    8a326af80e86d0e9ce92bcc1e65c8ff88297de4fa14ee936cb2293d414c9ec63  numpy-1.21.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    791492091744b0fe390a6ce85cc1bf5149968ac7d5f0477288f78c89b385d9af  numpy-1.21.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    0318c465786c1f63ac05d7c4dbcecd4d2d7e13f0959b01b534ea1e92202235c5  numpy-1.21.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    9a513bd9c1551894ee3d31369f9b07460ef223694098cf27d399513415855b68  numpy-1.21.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    91c6f5fc58df1e0a3cc0c3a717bb3308ff850abdaa6d2d802573ee2b11f674a8  numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    978010b68e17150db8765355d1ccdd450f9fc916824e8c4e35ee620590e234cd  numpy-1.21.1-cp38-cp38-win32.whl
    9749a40a5b22333467f02fe11edc98f022133ee1bfa8ab99bda5e5437b831214  numpy-1.21.1-cp38-cp38-win_amd64.whl
    d7a4aeac3b94af92a9373d6e77b37691b86411f9745190d2c351f410ab3a791f  numpy-1.21.1-cp39-cp39-macosx_10_9_universal2.whl
    d9e7912a56108aba9b31df688a4c4f5cb0d9d3787386b87d504762b6754fbb1b  numpy-1.21.1-cp39-cp39-macosx_10_9_x86_64.whl
    25b40b98ebdd272bc3020935427a4530b7d60dfbe1ab9381a39147834e985eac  numpy-1.21.1-cp39-cp39-macosx_11_0_arm64.whl
    8a92c5aea763d14ba9d6475803fc7904bda7decc2a0a68153f587ad82941fec1  numpy-1.21.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    05a0f648eb28bae4bcb204e6fd14603de2908de982e761a2fc78efe0f19e96e1  numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    f01f28075a92eede918b965e86e8f0ba7b7797a95aa8d35e1cc8821f5fc3ad6a  numpy-1.21.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    88c0b89ad1cc24a5efbb99ff9ab5db0f9a86e9cc50240177a571fbe9c2860ac2  numpy-1.21.1-cp39-cp39-win32.whl
    01721eefe70544d548425a07c80be8377096a54118070b8a62476866d5208e33  numpy-1.21.1-cp39-cp39-win_amd64.whl
    2d4d1de6e6fb3d28781c73fbde702ac97f03d79e4ffd6598b880b2d95d62ead4  numpy-1.21.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    504ced5d900fd5724c74ebf5dbb03572c04074bec9baa24b5646c66a2450e654  numpy-1.21.1.tar.gz
    dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd  numpy-1.21.1.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.21.1-changelog.rst(3.25 KB)
    numpy-1.21.1.tar.gz(8.99 MB)
    numpy-1.21.1.zip(9.78 MB)
    README.rst(10.04 KB)
  • v1.21.0(Jun 22, 2021)

    NumPy 1.21.0 Release Notes

    The NumPy 1.21.0 release highlights are

    • continued SIMD work covering more functions and platforms,
    • initial work on the new dtype infrastructure and casting,
    • universal2 wheels for Python 3.8 and Python 3.9 on Mac,
    • improved documentation,
    • improved annotations,
    • new PCG64DXSM bitgenerator for random numbers.

    In addition there are the usual large number of bug fixes and other improvements.

    The Python versions supported for this release are 3.7-3.9. Official support for Python 3.10 will be added when it is released.

    :warning: Warning: there are unresolved problems compiling NumPy 1.21.0 with gcc-11.1 .

    • Optimization level -O3 results in many wrong warnings when running the tests.
    • On some hardware NumPy will hang in an infinite loop.

    New functions

    Add PCG64DXSM BitGenerator

    Uses of the PCG64 BitGenerator in a massively-parallel context have been shown to have statistical weaknesses that were not apparent at the first release in numpy 1.17. Most users will never observe this weakness and are safe to continue to use PCG64. We have introduced a new PCG64DXSM BitGenerator that will eventually become the new default BitGenerator implementation used by default_rng in future releases. PCG64DXSM solves the statistical weakness while preserving the performance and the features of PCG64.

    See upgrading-pcg64 for more details.

    (gh-18906)

    Expired deprecations

    • The shape argument numpy.unravel_index cannot be passed as dims keyword argument anymore. (Was deprecated in NumPy 1.16.)

      (gh-17900)

    • The function PyUFunc_GenericFunction has been disabled. It was deprecated in NumPy 1.19. Users should call the ufunc directly using the Python API.

      (gh-18697)

    • The function PyUFunc_SetUsesArraysAsData has been disabled. It was deprecated in NumPy 1.19.

      (gh-18697)

    • The class PolyBase has been removed (deprecated in numpy 1.9.0). Please use the abstract ABCPolyBase class instead.

      (gh-18963)

    • The unused PolyError and PolyDomainError exceptions are removed.

      (gh-18963)

    Deprecations

    The .dtype attribute must return a dtype

    A DeprecationWarning is now given if the .dtype attribute of an object passed into np.dtype or as a dtype=obj argument is not a dtype. NumPy will stop attempting to recursively coerce the result of .dtype.

    (gh-13578)

    Inexact matches for numpy.convolve and numpy.correlate are deprecated

    numpy.convolve and numpy.correlate now emit a warning when there are case insensitive and/or inexact matches found for mode argument in the functions. Pass full "same", "valid", "full" strings instead of "s", "v", "f" for the mode argument.

    (gh-17492)

    np.typeDict has been formally deprecated

    np.typeDict is a deprecated alias for np.sctypeDict and has been so for over 14 years (6689502). A deprecation warning will now be issued whenever getting np.typeDict.

    (gh-17586)

    Exceptions will be raised during array-like creation

    When an object raised an exception during access of the special attributes __array__ or __array_interface__, this exception was usually ignored. A warning is now given when the exception is anything but AttributeError. To silence the warning, the type raising the exception has to be adapted to raise an AttributeError.

    (gh-19001)

    Four ndarray.ctypes methods have been deprecated

    Four methods of the ndarray.ctypes object have been deprecated, as they are (undocumentated) implementation artifacts of their respective properties.

    The methods in question are:

    • _ctypes.get_data (use _ctypes.data instead)
    • _ctypes.get_shape (use _ctypes.shape instead)
    • _ctypes.get_strides (use _ctypes.strides instead)
    • _ctypes.get_as_parameter (use _ctypes._as_parameter_ instead)

    (gh-19031)

    Expired deprecations

    • The shape argument numpy.unravel_index] cannot be passed as dims keyword argument anymore. (Was deprecated in NumPy 1.16.)

      (gh-17900)

    • The function PyUFunc_GenericFunction has been disabled. It was deprecated in NumPy 1.19. Users should call the ufunc directly using the Python API.

      (gh-18697)

    • The function PyUFunc_SetUsesArraysAsData has been disabled. It was deprecated in NumPy 1.19.

      (gh-18697)

    Remove deprecated PolyBase and unused PolyError and PolyDomainError

    The class PolyBase has been removed (deprecated in numpy 1.9.0). Please use the abstract ABCPolyBase class instead.

    Furthermore, the unused PolyError and PolyDomainError exceptions are removed from the numpy.polynomial.

    (gh-18963)

    Compatibility notes

    Error type changes in universal functions

    The universal functions may now raise different errors on invalid input in some cases. The main changes should be that a RuntimeError was replaced with a more fitting TypeError. When multiple errors were present in the same call, NumPy may now raise a different one.

    (gh-15271)

    __array_ufunc__ argument validation

    NumPy will now partially validate arguments before calling __array_ufunc__. Previously, it was possible to pass on invalid arguments (such as a non-existing keyword argument) when dispatch was known to occur.

    (gh-15271)

    __array_ufunc__ and additional positional arguments

    Previously, all positionally passed arguments were checked for __array_ufunc__ support. In the case of reduce, accumulate, and reduceat all arguments may be passed by position. This means that when they were passed by position, they could previously have been asked to handle the ufunc call via __array_ufunc__. Since this depended on the way the arguments were passed (by position or by keyword), NumPy will now only dispatch on the input and output array. For example, NumPy will never dispatch on the where array in a reduction such as np.add.reduce.

    (gh-15271)

    Validate input values in Generator.uniform

    Checked that high - low >= 0 in np.random.Generator.uniform. Raises ValueError if low > high. Previously out-of-order inputs were accepted and silently swapped, so that if low > high, the value generated was high + (low - high) * random().

    (gh-17921)

    /usr/include removed from default include paths

    The default include paths when building a package with numpy.distutils no longer include /usr/include. This path is normally added by the compiler, and hardcoding it can be problematic. In case this causes a problem, please open an issue. A workaround is documented in PR 18658.

    (gh-18658)

    Changes to comparisons with dtype=...

    When the dtype= (or signature) arguments to comparison ufuncs (equal, less, etc.) is used, this will denote the desired output dtype in the future. This means that:

    np.equal(2, 3, dtype=object)

    will give a FutureWarning that it will return an object array in the future, which currently happens for:

    np.equal(None, None, dtype=object)

    due to the fact that np.array(None) is already an object array. (This also happens for some other dtypes.)

    Since comparisons normally only return boolean arrays, providing any other dtype will always raise an error in the future and give a DeprecationWarning now.

    (gh-18718)

    Changes to dtype and signature arguments in ufuncs

    The universal function arguments dtype and signature which are also valid for reduction such as np.add.reduce (which is the implementation for np.sum) will now issue a warning when the dtype provided is not a "basic" dtype.

    NumPy almost always ignored metadata, byteorder or time units on these inputs. NumPy will now always ignore it and raise an error if byteorder or time unit changed. The following are the most important examples of changes which will give the error. In some cases previously the information stored was not ignored, in all of these an error is now raised:

    # Previously ignored the byte-order (affect if non-native)
    np.add(3, 5, dtype=">i32")
    
    # The biggest impact is for timedelta or datetimes:
    arr = np.arange(10, dtype="m8[s]")
    
    # The examples always ignored the time unit "ns":
    np.add(arr, arr, dtype="m8[ns]")
    np.maximum.reduce(arr, dtype="m8[ns]")
    
    # The following previously did use "ns" (as opposed to `arr.dtype`)
    np.add(3, 5, dtype="m8[ns]")  # Now return generic time units
    np.maximum(arr, arr, dtype="m8[ns]")  # Now returns "s" (from `arr`)
    

    The same applies for functions like np.sum which use these internally. This change is necessary to achieve consistent handling within NumPy.

    If you run into these, in most cases pass for example dtype=np.timedelta64 which clearly denotes a general timedelta64 without any unit or byte-order defined. If you need to specify the output dtype precisely, you may do so by either casting the inputs or providing an output array using out=.

    NumPy may choose to allow providing an exact output dtype here in the future, which would be preceded by a FutureWarning.

    (gh-18718)

    Ufunc signature=... and dtype= generalization and casting

    The behaviour for np.ufunc(1.0, 1.0, signature=...) or np.ufunc(1.0, 1.0, dtype=...) can now yield different loops in 1.21 compared to 1.20 because of changes in promotion. When signature was previously used, the casting check on inputs was relaxed, which could lead to downcasting inputs unsafely especially if combined with casting="unsafe".

    Casting is now guaranteed to be safe. If a signature is only partially provided, for example using signature=("float64", None, None), this could lead to no loop being found (an error). In that case, it is necessary to provide the complete signature to enforce casting the inputs. If dtype="float64" is used or only outputs are set (e.g. signature=(None, None, "float64") the is unchanged. We expect that very few users are affected by this change.

    Further, the meaning of dtype="float64" has been slightly modified and now strictly enforces only the correct output (and not input) DTypes. This means it is now always equivalent to:

    signature=(None, None, "float64")
    

    (If the ufunc has two inputs and one output). Since this could lead to no loop being found in some cases, NumPy will normally also search for the loop:

    signature=("float64", "float64", "float64")
    

    if the first search failed. In the future, this behaviour may be customized to achieve the expected results for more complex ufuncs. (For some universal functions such as np.ldexp inputs can have different DTypes.)

    (gh-18880)

    Distutils forces strict floating point model on clang

    NumPy distutils will now always add the -ffp-exception-behavior=strict compiler flag when compiling with clang. Clang defaults to a non-strict version, which allows the compiler to generate code that does not set floating point warnings/errors correctly.

    (gh-19049)

    C API changes

    Use of ufunc->type_resolver and "type tuple"

    NumPy now normalizes the "type tuple" argument to the type resolver functions before calling it. Note that in the use of this type resolver is legacy behaviour and NumPy will not do so when possible. Calling ufunc->type_resolver or PyUFunc_DefaultTypeResolver is strongly discouraged and will now enforce a normalized type tuple if done. Note that this does not affect providing a type resolver, which is expected to keep working in most circumstances. If you have an unexpected use-case for calling the type resolver, please inform the NumPy developers so that a solution can be found.

    (gh-18718)

    New Features

    Added a mypy plugin for handling platform-specific numpy.number precisions

    A mypy plugin is now available for automatically assigning the (platform-dependent) precisions of certain numpy.number subclasses, including the likes of numpy.int_, numpy.intp and numpy.longlong. See the documentation on scalar types <arrays.scalars.built-in> for a comprehensive overview of the affected classes.

    Note that while usage of the plugin is completely optional, without it the precision of above-mentioned classes will be inferred as typing.Any.

    To enable the plugin, one must add it to their mypy [configuration file] (https://mypy.readthedocs.io/en/stable/config_file.html):

    [mypy]
    plugins = numpy.typing.mypy_plugin
    

    (gh-17843)

    Let the mypy plugin manage extended-precision numpy.number subclasses

    The mypy plugin, introduced in numpy/numpy#17843, has been expanded: the plugin now removes annotations for platform-specific extended-precision types that are not available to the platform in question. For example, it will remove numpy.float128 when not available.

    Without the plugin all extended-precision types will, as far as mypy is concerned, be available on all platforms.

    To enable the plugin, one must add it to their mypy configuration file:

    [mypy]
    plugins = numpy.typing.mypy_plugin
                                                                            cn
    

    (gh-18322)

    New min_digits argument for printing float values

    A new min_digits argument has been added to the dragon4 float printing functions numpy.format_float_positional and numpy.format_float_scientific. This kwd guarantees that at least the given number of digits will be printed when printing in unique=True mode, even if the extra digits are unnecessary to uniquely specify the value. It is the counterpart to the precision argument which sets the maximum number of digits to be printed. When unique=False in fixed precision mode, it has no effect and the precision argument fixes the number of digits.

    (gh-18629)

    f2py now recognizes Fortran abstract interface blocks

    numpy.f2py can now parse abstract interface blocks.

    (gh-18695)

    BLAS and LAPACK configuration via environment variables

    Autodetection of installed BLAS and LAPACK libraries can be bypassed by using the NPY_BLAS_LIBS and NPY_LAPACK_LIBS environment variables. Instead, the link flags in these environment variables will be used directly, and the language is assumed to be F77. This is especially useful in automated builds where the BLAS and LAPACK that are installed are known exactly. A use case is replacing the actual implementation at runtime via stub library links.

    If NPY_CBLAS_LIBS is set (optional in addition to NPY_BLAS_LIBS), this will be used as well, by defining HAVE_CBLAS and appending the environment variable content to the link flags.

    (gh-18737)

    A runtime-subcriptable alias has been added for ndarray

    numpy.typing.NDArray has been added, a runtime-subscriptable alias for np.ndarray[Any, np.dtype[~Scalar]]. The new type alias can be used for annotating arrays with a given dtype and unspecified shape.

    NumPy does not support the annotating of array shapes as of 1.21, this is expected to change in the future though (see 646{.interpreted-text role="pep"}).

    Examples

    >>> import numpy as np
    >>> import numpy.typing as npt
    
    >>> print(npt.NDArray)
    numpy.ndarray[typing.Any, numpy.dtype[~ScalarType]]
    
    >>> print(npt.NDArray[np.float64])
    numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
    
    >>> NDArrayInt = npt.NDArray[np.int_]
    >>> a: NDArrayInt = np.arange(10)
    
    >>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]:
    ...     return np.array(a)
    

    (gh-18935)

    Improvements

    Arbitrary period option for numpy.unwrap

    The size of the interval over which phases are unwrapped is no longer restricted to 2 * pi. This is especially useful for unwrapping degrees, but can also be used for other intervals.

    >>> phase_deg = np.mod(np.linspace(0,720,19), 360) - 180
    >>> phase_deg
    array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
           -180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
           -180.])
    
    >>> unwrap(phase_deg, period=360)
    array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
            180.,  220.,  260.,  300.,  340.,  380.,  420.,  460.,  500.,
            540.])
    

    (gh-16987)

    np.unique now returns single NaN

    When np.unique operated on an array with multiple NaN entries, its return included a NaN for each entry that was NaN in the original array. This is now improved such that the returned array contains just one NaN as the last element.

    Also for complex arrays all NaN values are considered equivalent (no matter whether the NaN is in the real or imaginary part). As the representant for the returned array the smallest one in the lexicographical order is chosen - see np.sort for how the lexicographical order is defined for complex arrays.

    (gh-18070)

    Generator.rayleigh and Generator.geometric performance improved

    The performance of Rayleigh and geometric random variate generation in Generator has improved. These are both transformation of exponential random variables and the slow log-based inverse cdf transformation has been replaced with the Ziggurat-based exponential variate generator.

    This change breaks the stream of variates generated when variates from either of these distributions are produced.

    (gh-18666)

    Placeholder annotations have been improved

    All placeholder annotations, that were previously annotated as typing.Any, have been improved. Where appropiate they have been replaced with explicit function definitions, classes or other miscellaneous objects.

    (gh-18934)

    Performance improvements

    Improved performance in integer division of NumPy arrays

    Integer division of NumPy arrays now uses libdivide when the divisor is a constant. With the usage of libdivide and other minor optimizations, there is a large speedup. The // operator and np.floor_divide makes use of the new changes.

    (gh-17727)

    Improve performance of np.save and np.load for small arrays

    np.save is now a lot faster for small arrays.

    np.load is also faster for small arrays, but only when serializing with a version >= (3, 0).

    Both are done by removing checks that are only relevant for Python 2, while still maintaining compatibility with arrays which might have been created by Python 2.

    (gh-18657)

    Changes

    numpy.piecewise output class now matches the input class

    When numpy.ndarray subclasses are used on input to numpy.piecewise, they are passed on to the functions. The output will now be of the same subclass as well.

    (gh-18110)

    Enable Accelerate Framework

    With the release of macOS 11.3, several different issues that numpy was encountering when using Accelerate Framework's implementation of BLAS and LAPACK should be resolved. This change enables the Accelerate Framework as an option on macOS. If additional issues are found, please file a bug report against Accelerate using the developer feedback assistant tool (https://developer.apple.com/bug-reporting/). We intend to address issues promptly and plan to continue supporting and updating our BLAS and LAPACK libraries.

    (gh-18874)

    Checksums

    MD5

    e4b31fd5cb97e50238b3dbb3487b2cb7  numpy-1.21.0-cp37-cp37m-macosx_10_9_x86_64.whl
    111e09f3fddd8e14540cf56493dd786a  numpy-1.21.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    e2fc116043d1b91c627f3c8884151f33  numpy-1.21.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    82e267da77628b96cdf8832e475f6ef3  numpy-1.21.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    baa416fe77b840a19556f5d808eb3165  numpy-1.21.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    aba24836f51bb0a855434c41de122e3d  numpy-1.21.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    aa9f94fa6eabfa193902676825934196  numpy-1.21.0-cp37-cp37m-win32.whl
    6d771c7670b95adb62627e383c883804  numpy-1.21.0-cp37-cp37m-win_amd64.whl
    e6d77cae6054b738603415faf9cb4358  numpy-1.21.0-cp38-cp38-macosx_10_9_universal2.whl
    9589cfe5a22f54956101b7131be5cabd  numpy-1.21.0-cp38-cp38-macosx_10_9_x86_64.whl
    5faa22dffa53cfe7d1d40d48aa817670  numpy-1.21.0-cp38-cp38-macosx_11_0_arm64.whl
    b81545a2924a201817d433c3bad0bc7d  numpy-1.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    3e60589e3325a3583880bf6998cfaca6  numpy-1.21.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    baf409eb08b7462899d45c42a7c1d854  numpy-1.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    4f311de7973503dde6ad3915f158fd63  numpy-1.21.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    1a79926ad8d3dda573f5c2d8d06e0e38  numpy-1.21.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    0b39eb396a1d5983f6eb2075a867a1a6  numpy-1.21.0-cp38-cp38-win32.whl
    5c8c3e94f5a55123b1a0d3a4df14b505  numpy-1.21.0-cp38-cp38-win_amd64.whl
    c6e9fa30e82e3ca1551d2f048d4a1dc4  numpy-1.21.0-cp39-cp39-macosx_10_9_universal2.whl
    96d7d3a438296bfc68b819b3624936a5  numpy-1.21.0-cp39-cp39-macosx_10_9_x86_64.whl
    31cf2152b4151912be9d165633a7d8eb  numpy-1.21.0-cp39-cp39-macosx_11_0_arm64.whl
    e49cd2db6ec712b8b1d516154b5a034a  numpy-1.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    c10e13fef152ed1c64151c8b6f6d0799  numpy-1.21.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    a627acdfcd302807cf8592d5bd958d35  numpy-1.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    e2287cd16300b363d376b661646fded9  numpy-1.21.0-cp39-cp39-win32.whl
    29d1bf596981d930bb1c95c944b4b3d8  numpy-1.21.0-cp39-cp39-win_amd64.whl
    42d05fcbab6137a404be36f27fc254f0  numpy-1.21.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    003e34bd2cba06e7fe299a864964ea24  numpy-1.21.0.tar.gz
    930ebfdffd10fed701a7823691f02983  numpy-1.21.0.zip
    

    SHA256

    d5caa946a9f55511e76446e170bdad1d12d6b54e17a2afe7b189112ed4412bb8  numpy-1.21.0-cp37-cp37m-macosx_10_9_x86_64.whl
    ac4fd578322842dbda8d968e3962e9f22e862b6ec6e3378e7415625915e2da4d  numpy-1.21.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    598fe100b2948465cf3ed64b1a326424b5e4be2670552066e17dfaa67246011d  numpy-1.21.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    7c55407f739f0bfcec67d0df49103f9333edc870061358ac8a8c9e37ea02fcd2  numpy-1.21.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    75579acbadbf74e3afd1153da6177f846212ea2a0cc77de53523ae02c9256513  numpy-1.21.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    cc367c86eb87e5b7c9592935620f22d13b090c609f1b27e49600cd033b529f54  numpy-1.21.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    d89b0dc7f005090e32bb4f9bf796e1dcca6b52243caf1803fdd2b748d8561f63  numpy-1.21.0-cp37-cp37m-win32.whl
    eda2829af498946c59d8585a9fd74da3f810866e05f8df03a86f70079c7531dd  numpy-1.21.0-cp37-cp37m-win_amd64.whl
    1a784e8ff7ea2a32e393cc53eb0003eca1597c7ca628227e34ce34eb11645a0e  numpy-1.21.0-cp38-cp38-macosx_10_9_universal2.whl
    bba474a87496d96e61461f7306fba2ebba127bed7836212c360f144d1e72ac54  numpy-1.21.0-cp38-cp38-macosx_10_9_x86_64.whl
    fd0a359c1c17f00cb37de2969984a74320970e0ceef4808c32e00773b06649d9  numpy-1.21.0-cp38-cp38-macosx_11_0_arm64.whl
    e4d5a86a5257843a18fb1220c5f1c199532bc5d24e849ed4b0289fb59fbd4d8f  numpy-1.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    620732f42259eb2c4642761bd324462a01cdd13dd111740ce3d344992dd8492f  numpy-1.21.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    b9205711e5440954f861ceeea8f1b415d7dd15214add2e878b4d1cf2bcb1a914  numpy-1.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    ad09f55cc95ed8d80d8ab2052f78cc21cb231764de73e229140d81ff49d8145e  numpy-1.21.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    a1f2fb2da242568af0271455b89aee0f71e4e032086ee2b4c5098945d0e11cf6  numpy-1.21.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    e58ddb53a7b4959932f5582ac455ff90dcb05fac3f8dcc8079498d43afbbde6c  numpy-1.21.0-cp38-cp38-win32.whl
    d2910d0a075caed95de1a605df00ee03b599de5419d0b95d55342e9a33ad1fb3  numpy-1.21.0-cp38-cp38-win_amd64.whl
    a290989cd671cd0605e9c91a70e6df660f73ae87484218e8285c6522d29f6e38  numpy-1.21.0-cp39-cp39-macosx_10_9_universal2.whl
    3537b967b350ad17633b35c2f4b1a1bbd258c018910b518c30b48c8e41272717  numpy-1.21.0-cp39-cp39-macosx_10_9_x86_64.whl
    ccc6c650f8700ce1e3a77668bb7c43e45c20ac06ae00d22bdf6760b38958c883  numpy-1.21.0-cp39-cp39-macosx_11_0_arm64.whl
    709884863def34d72b183d074d8ba5cfe042bc3ff8898f1ffad0209161caaa99  numpy-1.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    bebab3eaf0641bba26039fb0b2c5bf9b99407924b53b1ea86e03c32c64ef5aef  numpy-1.21.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    cf680682ad0a3bef56dae200dbcbac2d57294a73e5b0f9864955e7dd7c2c2491  numpy-1.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    d95d16204cd51ff1a1c8d5f9958ce90ae190be81d348b514f9be39f878b8044a  numpy-1.21.0-cp39-cp39-win32.whl
    2ba579dde0563f47021dcd652253103d6fd66165b18011dce1a0609215b2791e  numpy-1.21.0-cp39-cp39-win_amd64.whl
    3c40e6b860220ed862e8097b8f81c9af6d7405b723f4a7af24a267b46f90e461  numpy-1.21.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    b662c841b29848c04d9134f31dbaa7d4c8e673f45bb3a5f28d02f49c424d558a  numpy-1.21.0.tar.gz
    e80fe25cba41c124d04c662f33f6364909b985f2eb5998aaa5ae4b9587242cce  numpy-1.21.0.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.21.0-changelog.rst(64.32 KB)
    numpy-1.21.0.tar.gz(8.98 MB)
    numpy-1.21.0.zip(9.77 MB)
    README.rst(29.01 KB)
  • v1.21.0rc2(Jun 8, 2021)

    NumPy 1.21.0 Release Notes

    The NumPy 1.21.0 release highlights are

    • continued SIMD work covering more functions and platforms,
    • initial work on the new dtype infrastructure and casting,
    • universal2 wheels for Python 3.8 and Python 3.9 on Mac,
    • improved documentation,
    • improved annotations,
    • new PCG64DXSM bitgenerator for random numbers.

    In addition there are the usual large number of bug fixes and other improvements.

    The Python versions supported for this release are 3.7-3.9. Official support for Python 3.10 will be added when it is released.

    New functions

    Add PCG64DXSM BitGenerator

    Uses of the PCG64 BitGenerator in a massively-parallel context have been shown to have statistical weaknesses that were not apparent at the first release in numpy 1.17. Most users will never observe this weakness and are safe to continue to use PCG64. We have introduced a new PCG64DXSM BitGenerator that will eventually become the new default BitGenerator implementation used by default_rng in future releases. PCG64DXSM solves the statistical weakness while preserving the performance and the features of PCG64.

    See upgrading-pcg64 for more details.

    (gh-18906)

    Expired deprecations

    • The shape argument numpy.unravel_index cannot be passed as dims keyword argument anymore. (Was deprecated in NumPy 1.16.)

      (gh-17900)

    • The function PyUFunc_GenericFunction has been disabled. It was deprecated in NumPy 1.19. Users should call the ufunc directly using the Python API.

      (gh-18697)

    • The function PyUFunc_SetUsesArraysAsData has been disabled. It was deprecated in NumPy 1.19.

      (gh-18697)

    • The class PolyBase has been removed (deprecated in numpy 1.9.0). Please use the abstract ABCPolyBase class instead.

      (gh-18963)

    • The unused PolyError and PolyDomainError exceptions are removed.

      (gh-18963)

    Deprecations

    Inexact matches for numpy.convolve and numpy.correlate are deprecated

    numpy.convolve and numpy.correlate now emit a warning when there are case insensitive and/or inexact matches found for mode argument in the functions. Pass full "same", "valid", "full" strings instead of "s", "v", "f" for the mode argument.

    (gh-17492)

    np.typeDict has been formally deprecated

    np.typeDict is a deprecated alias for np.sctypeDict and has been so for over 14 years (6689502). A deprecation warning will now be issued whenever getting np.typeDict.

    (gh-17586)

    Exceptions will be raised during array-like creation

    When an object raised an exception during access of the special attributes __array__ or __array_interface__, this exception was usually ignored. A warning is now given when the exception is anything but AttributeError. To silence the warning, the type raising the exception has to be adapted to raise an AttributeError.

    (gh-19001)

    Four ndarray.ctypes methods have been deprecated

    Four methods of the ndarray.ctypes object have been deprecated, as they are (undocumentated) implementation artifacts of their respective properties.

    The methods in question are:

    • _ctypes.get_data (use _ctypes.data instead)
    • _ctypes.get_shape (use _ctypes.shape instead)
    • _ctypes.get_strides (use _ctypes.strides instead)
    • _ctypes.get_as_parameter (use _ctypes._as_parameter_ instead)

    (gh-19031)

    Expired deprecations

    • The shape argument numpy.unravel_index] cannot be passed as dims keyword argument anymore. (Was deprecated in NumPy 1.16.)

      (gh-17900)

    • The function PyUFunc_GenericFunction has been disabled. It was deprecated in NumPy 1.19. Users should call the ufunc directly using the Python API.

      (gh-18697)

    • The function PyUFunc_SetUsesArraysAsData has been disabled. It was deprecated in NumPy 1.19.

      (gh-18697)

    Remove deprecated PolyBase and unused PolyError and PolyDomainError

    The class PolyBase has been removed (deprecated in numpy 1.9.0). Please use the abstract ABCPolyBase class instead.

    Furthermore, the unused PolyError and PolyDomainError exceptions are removed from the numpy.polynomial.

    (gh-18963)

    Compatibility notes

    Error type changes in universal functions

    The universal functions may now raise different errors on invalid input in some cases. The main changes should be that a RuntimeError was replaced with a more fitting TypeError. When multiple errors were present in the same call, NumPy may now raise a different one.

    (gh-15271)

    __array_ufunc__ argument validation

    NumPy will now partially validate arguments before calling __array_ufunc__. Previously, it was possible to pass on invalid arguments (such as a non-existing keyword argument) when dispatch was known to occur.

    (gh-15271)

    __array_ufunc__ and additional positional arguments

    Previously, all positionally passed arguments were checked for __array_ufunc__ support. In the case of reduce, accumulate, and reduceat all arguments may be passed by position. This means that when they were passed by position, they could previously have been asked to handle the ufunc call via __array_ufunc__. Since this depended on the way the arguments were passed (by position or by keyword), NumPy will now only dispatch on the input and output array. For example, NumPy will never dispatch on the where array in a reduction such as np.add.reduce.

    (gh-15271)

    Validate input values in Generator.uniform

    Checked that high - low >= 0 in np.random.Generator.uniform. Raises ValueError if low > high. Previously out-of-order inputs were accepted and silently swapped, so that if low > high, the value generated was high + (low - high) * random().

    (gh-17921)

    /usr/include removed from default include paths

    The default include paths when building a package with numpy.distutils no longer include /usr/include. This path is normally added by the compiler, and hardcoding it can be problematic. In case this causes a problem, please open an issue. A workaround is documented in PR 18658.

    (gh-18658)

    Changes to comparisons with dtype=...

    When the dtype= (or signature) arguments to comparison ufuncs (equal, less, etc.) is used, this will denote the desired output dtype in the future. This means that:

    np.equal(2, 3, dtype=object)

    will give a FutureWarning that it will return an object array in the future, which currently happens for:

    np.equal(None, None, dtype=object)

    due to the fact that np.array(None) is already an object array. (This also happens for some other dtypes.)

    Since comparisons normally only return boolean arrays, providing any other dtype will always raise an error in the future and give a DeprecationWarning now.

    (gh-18718)

    Changes to dtype and signature arguments in ufuncs

    The universal function arguments dtype and signature which are also valid for reduction such as np.add.reduce (which is the implementation for np.sum) will now issue a warning when the dtype provided is not a "basic" dtype.

    NumPy almost always ignored metadata, byteorder or time units on these inputs. NumPy will now always ignore it and raise an error if byteorder or time unit changed. The following are the most important examples of changes which will give the error. In some cases previously the information stored was not ignored, in all of these an error is now raised:

    # Previously ignored the byte-order (affect if non-native)
    np.add(3, 5, dtype=">i32")
    
    # The biggest impact is for timedelta or datetimes:
    arr = np.arange(10, dtype="m8[s]")
    
    # The examples always ignored the time unit "ns":
    np.add(arr, arr, dtype="m8[ns]")
    np.maximum.reduce(arr, dtype="m8[ns]")
    
    # The following previously did use "ns" (as opposed to `arr.dtype`)
    np.add(3, 5, dtype="m8[ns]")  # Now return generic time units
    np.maximum(arr, arr, dtype="m8[ns]")  # Now returns "s" (from `arr`)
    

    The same applies for functions like np.sum which use these internally. This change is necessary to achieve consistent handling within NumPy.

    If you run into these, in most cases pass for example dtype=np.timedelta64 which clearly denotes a general timedelta64 without any unit or byte-order defined. If you need to specify the output dtype precisely, you may do so by either casting the inputs or providing an output array using out=.

    NumPy may choose to allow providing an exact output dtype here in the future, which would be preceded by a FutureWarning.

    (gh-18718)

    Ufunc signature=... and dtype= generalization and casting

    The behaviour for np.ufunc(1.0, 1.0, signature=...) or np.ufunc(1.0, 1.0, dtype=...) can now yield different loops in 1.21 compared to 1.20 because of changes in promotion. When signature was previously used, the casting check on inputs was relaxed, which could lead to downcasting inputs unsafely especially if combined with casting="unsafe".

    Casting is now guaranteed to be safe. If a signature is only partially provided, for example using signature=("float64", None, None), this could lead to no loop being found (an error). In that case, it is necessary to provide the complete signature to enforce casting the inputs. If dtype="float64" is used or only outputs are set (e.g. signature=(None, None, "float64") the is unchanged. We expect that very few users are affected by this change.

    Further, the meaning of dtype="float64" has been slightly modified and now strictly enforces only the correct output (and not input) DTypes. This means it is now always equivalent to:

    signature=(None, None, "float64")
    

    (If the ufunc has two inputs and one output). Since this could lead to no loop being found in some cases, NumPy will normally also search for the loop:

    signature=("float64", "float64", "float64")
    

    if the first search failed. In the future, this behaviour may be customized to achieve the expected results for more complex ufuncs. (For some universal functions such as np.ldexp inputs can have different DTypes.)

    (gh-18880)

    Distutils forces strict floating point model on clang

    NumPy distutils will now always add the -ffp-exception-behavior=strict compiler flag when compiling with clang. Clang defaults to a non-strict version, which allows the compiler to generate code that does not set floating point warnings/errors correctly.

    (gh-19049)

    C API changes

    Use of ufunc->type_resolver and "type tuple"

    NumPy now normalizes the "type tuple" argument to the type resolver functions before calling it. Note that in the use of this type resolver is legacy behaviour and NumPy will not do so when possible. Calling ufunc->type_resolver or PyUFunc_DefaultTypeResolver is strongly discouraged and will now enforce a normalized type tuple if done. Note that this does not affect providing a type resolver, which is expected to keep working in most circumstances. If you have an unexpected use-case for calling the type resolver, please inform the NumPy developers so that a solution can be found.

    (gh-18718)

    New Features

    Added a mypy plugin for handling platform-specific numpy.number precisions

    A mypy plugin is now available for automatically assigning the (platform-dependent) precisions of certain numpy.number subclasses, including the likes of numpy.int_, numpy.intp and numpy.longlong. See the documentation on scalar types <arrays.scalars.built-in> for a comprehensive overview of the affected classes.

    Note that while usage of the plugin is completely optional, without it the precision of above-mentioned classes will be inferred as typing.Any.

    To enable the plugin, one must add it to their mypy [configuration file] (https://mypy.readthedocs.io/en/stable/config_file.html):

    [mypy]
    plugins = numpy.typing.mypy_plugin
    

    (gh-17843)

    Let the mypy plugin manage extended-precision numpy.number subclasses

    The mypy plugin, introduced in numpy/numpy#17843, has been expanded: the plugin now removes annotations for platform-specific extended-precision types that are not available to the platform in question. For example, it will remove numpy.float128 when not available.

    Without the plugin all extended-precision types will, as far as mypy is concerned, be available on all platforms.

    To enable the plugin, one must add it to their mypy configuration file:

    [mypy]
    plugins = numpy.typing.mypy_plugin
                                                                            cn
    

    (gh-18322)

    New min_digits argument for printing float values

    A new min_digits argument has been added to the dragon4 float printing functions numpy.format_float_positional and numpy.format_float_scientific. This kwd guarantees that at least the given number of digits will be printed when printing in unique=True mode, even if the extra digits are unnecessary to uniquely specify the value. It is the counterpart to the precision argument which sets the maximum number of digits to be printed. When unique=False in fixed precision mode, it has no effect and the precision argument fixes the number of digits.

    (gh-18629)

    f2py now recognizes Fortran abstract interface blocks

    numpy.f2py can now parse abstract interface blocks.

    (gh-18695)

    BLAS and LAPACK configuration via environment variables

    Autodetection of installed BLAS and LAPACK libraries can be bypassed by using the NPY_BLAS_LIBS and NPY_LAPACK_LIBS environment variables. Instead, the link flags in these environment variables will be used directly, and the language is assumed to be F77. This is especially useful in automated builds where the BLAS and LAPACK that are installed are known exactly. A use case is replacing the actual implementation at runtime via stub library links.

    If NPY_CBLAS_LIBS is set (optional in addition to NPY_BLAS_LIBS), this will be used as well, by defining HAVE_CBLAS and appending the environment variable content to the link flags.

    (gh-18737)

    A runtime-subcriptable alias has been added for ndarray

    numpy.typing.NDArray has been added, a runtime-subscriptable alias for np.ndarray[Any, np.dtype[~Scalar]]. The new type alias can be used for annotating arrays with a given dtype and unspecified shape. ^1^

    ^1^ NumPy does not support the annotating of array shapes as of 1.21, this is expected to change in the future though (see 646{.interpreted-text role="pep"}).

    Examples

    >>> import numpy as np
    >>> import numpy.typing as npt
    
    >>> print(npt.NDArray)
    numpy.ndarray[typing.Any, numpy.dtype[~ScalarType]]
    
    >>> print(npt.NDArray[np.float64])
    numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
    
    >>> NDArrayInt = npt.NDArray[np.int_]
    >>> a: NDArrayInt = np.arange(10)
    
    >>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]:
    ...     return np.array(a)
    

    (gh-18935)

    Improvements

    Arbitrary period option for numpy.unwrap

    The size of the interval over which phases are unwrapped is no longer restricted to 2 * pi. This is especially useful for unwrapping degrees, but can also be used for other intervals.

    >>> phase_deg = np.mod(np.linspace(0,720,19), 360) - 180
    >>> phase_deg
    array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
           -180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
           -180.])
    
    >>> unwrap(phase_deg, period=360)
    array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
            180.,  220.,  260.,  300.,  340.,  380.,  420.,  460.,  500.,
            540.])
    

    (gh-16987)

    np.unique now returns single NaN

    When np.unique operated on an array with multiple NaN entries, its return included a NaN for each entry that was NaN in the original array. This is now improved such that the returned array contains just one NaN as the last element.

    Also for complex arrays all NaN values are considered equivalent (no matter whether the NaN is in the real or imaginary part). As the representant for the returned array the smallest one in the lexicographical order is chosen - see np.sort for how the lexicographical order is defined for complex arrays.

    (gh-18070)

    Generator.rayleigh and Generator.geometric performance improved

    The performance of Rayleigh and geometric random variate generation in Generator has improved. These are both transformation of exponential random variables and the slow log-based inverse cdf transformation has been replaced with the Ziggurat-based exponential variate generator.

    This change breaks the stream of variates generated when variates from either of these distributions are produced.

    (gh-18666)

    Placeholder annotations have been improved

    All placeholder annotations, that were previously annotated as typing.Any, have been improved. Where appropiate they have been replaced with explicit function definitions, classes or other miscellaneous objects.

    (gh-18934)

    Performance improvements

    Improved performance in integer division of NumPy arrays

    Integer division of NumPy arrays now uses libdivide when the divisor is a constant. With the usage of libdivide and other minor optimizations, there is a large speedup. The // operator and np.floor_divide makes use of the new changes.

    (gh-17727)

    Improve performance of np.save and np.load for small arrays

    np.save is now a lot faster for small arrays.

    np.load is also faster for small arrays, but only when serializing with a version >= (3, 0).

    Both are done by removing checks that are only relevant for Python 2, while still maintaining compatibility with arrays which might have been created by Python 2.

    (gh-18657)

    Changes

    numpy.piecewise output class now matches the input class

    When numpy.ndarray subclasses are used on input to numpy.piecewise, they are passed on to the functions. The output will now be of the same subclass as well.

    (gh-18110)

    Enable Accelerate Framework

    With the release of macOS 11.3, several different issues that numpy was encountering when using Accelerate Framework's implementation of BLAS and LAPACK should be resolved. This change enables the Accelerate Framework as an option on macOS. If additional issues are found, please file a bug report against Accelerate using the developer feedback assistant tool (https://developer.apple.com/bug-reporting/). We intend to address issues promptly and plan to continue supporting and updating our BLAS and LAPACK libraries.

    (gh-18874)

    Checksums

    MD5

    dbebcfa9ea1ee8e965e5c67dd445f442  numpy-1.21.0rc2-cp37-cp37m-macosx_10_9_x86_64.whl
    682e6dc443cdf8bff9941bc8045ee176  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    8c4706bc4dbf63bb8d5befa7be5301ca  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    50702a8708d4b272a9a9c6d4be9c13d7  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    5ff414f878262c3d4b1f25677c08170e  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    e39a00070130d7db4a8c21bde7fe343c  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    4179696b3d46361c1dca956ede445d71  numpy-1.21.0rc2-cp37-cp37m-win32.whl
    a71c9c8713300038fd85f3434c819623  numpy-1.21.0rc2-cp37-cp37m-win_amd64.whl
    238168b5be91f15e00bfda8980268c1c  numpy-1.21.0rc2-cp38-cp38-macosx_10_9_universal2.whl
    21cd69e57f6ca956cfb18e5eac7f284b  numpy-1.21.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
    db329a3092104d18265d3186b2024383  numpy-1.21.0rc2-cp38-cp38-macosx_11_0_arm64.whl
    51d2aea5ba376ab0ba242deefc8d530d  numpy-1.21.0rc2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    72916834e36511fd0381a94e8971c105  numpy-1.21.0rc2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    e30845a0aa593380f1385c977b10971f  numpy-1.21.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    ae21393c854629fde4c5cea46778f41d  numpy-1.21.0rc2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    441b4ac09e2d77f7c96571a728b040a3  numpy-1.21.0rc2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    f31bd687ec8fd13ecdb0db91763c6ebb  numpy-1.21.0rc2-cp38-cp38-win32.whl
    163c0c4634d5d15b29791fead97571dd  numpy-1.21.0rc2-cp38-cp38-win_amd64.whl
    fd79df4f0255b3b56a93085e5512e778  numpy-1.21.0rc2-cp39-cp39-macosx_10_9_universal2.whl
    35529757fbbf871dcaecc124e985af67  numpy-1.21.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
    4138675d78b13511a0b11bc296bd83e6  numpy-1.21.0rc2-cp39-cp39-macosx_11_0_arm64.whl
    62a72562ff240981bbcfeebc679bc4ee  numpy-1.21.0rc2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    73dd49f6e4d608017b7257c34f4f919e  numpy-1.21.0rc2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    6aa0da53da74868c5456f9a5a0781616  numpy-1.21.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8a5342cd72277d89b441bc1125088b87  numpy-1.21.0rc2-cp39-cp39-win32.whl
    59dbae57afdf57bf2ba9ec402e40366e  numpy-1.21.0rc2-cp39-cp39-win_amd64.whl
    b2ab4d71140295df32992f9a34c61012  numpy-1.21.0rc2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    44a411dbb345847a89874447cc8fb2c0  numpy-1.21.0rc2.tar.gz
    ffd8130fbb3046ad090fada62a724aac  numpy-1.21.0rc2.zip
    

    SHA256

    fd11aa1d58b7538076613722a2915d3c3f1c0cd24f674e3194be29729d744dba  numpy-1.21.0rc2-cp37-cp37m-macosx_10_9_x86_64.whl
    29036b6d56ad35f0637ac84af43f9469b39916ed06aa96729767639e3023ef72  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    5b2752404f6ba22b99617c21dc6c2f15accf61642a5626d239649a96294d8ecb  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    82446d2defd917656c87158a02a7d7e7c03ce8bde9bb39ae5f5b369c5ef561d2  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    b66b3cdad12d6074ddc46148cefc35c48b0437515c5bf8ce2acd913f486bc257  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    74ce56338ff5de5d8b48314a1ec5ebbc2b1c0f9f9d6c00ce1815be0d3f9dcbb4  numpy-1.21.0rc2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    8bb0a19f185e8d4fa60bb036cdc9fb4f34c6486e1d30034f6cacb882efa5252a  numpy-1.21.0rc2-cp37-cp37m-win32.whl
    a0179c7130aa03f9e60cea9a0b0535b2c2b49f486bae724433cf6ac2abac832f  numpy-1.21.0rc2-cp37-cp37m-win_amd64.whl
    ce5b195cbcced7c97429ca0323e2e3a19a503fc9ce0e1fea6c5be55e71214ebf  numpy-1.21.0rc2-cp38-cp38-macosx_10_9_universal2.whl
    a59ce04c77711cab0334591650af628151aa515d11bde905198d4e898bb57315  numpy-1.21.0rc2-cp38-cp38-macosx_10_9_x86_64.whl
    4b8e4c37aea928f0d8359ab24b14382de450180e618972d3b9df50848d084db1  numpy-1.21.0rc2-cp38-cp38-macosx_11_0_arm64.whl
    09932f5bf0abda5654eda225fd070915942f2c32d9bb6747bd45b66af7a0a9b1  numpy-1.21.0rc2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    cfb7b67500e6af81a793287ca41912590327051b58da9dc2c0ecb65d35db6ec9  numpy-1.21.0rc2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    fec6300b8237aa1c561a8a5fec81ba1bcdf00b622f660897369798a8d57163c4  numpy-1.21.0rc2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a18d4368018f029ea73df53ef801234d2d354e95c32d7890b1102bd2da9857ba  numpy-1.21.0rc2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    afebef861665eaa2e491894f2269d1941fbfbb8e5acf565a785107dcfc07613d  numpy-1.21.0rc2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    7d98ade9199b15aa8f589b2263d6028364aecd7a9caf426e65ffc1ba921624a5  numpy-1.21.0rc2-cp38-cp38-win32.whl
    3c90b0bb77615bda5e007cfa4c53eb6097ecc82e247726e0eb138fcda769b45d  numpy-1.21.0rc2-cp38-cp38-win_amd64.whl
    435090a12dca2232cdbd58740afd5c9ede830037e1f6af60344e3afd49554fc8  numpy-1.21.0rc2-cp39-cp39-macosx_10_9_universal2.whl
    bee549287cf2fcbf8f8e11b024e62f1a22af296cb1b015aa346d58a01cbfb603  numpy-1.21.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
    5d4c1b43c84cfe1923dbaed4ef18261a9f7b420983dc209af117c28f32637973  numpy-1.21.0rc2-cp39-cp39-macosx_11_0_arm64.whl
    93d0cb1b07511d1b108346975cd34cc1c32b7061fbb574ef4ce8fc8139cce417  numpy-1.21.0rc2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    53e7147d04c75dcf05c3bb38357329d64d4908f403560a1fcb64f7972599c638  numpy-1.21.0rc2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    32f683dd175c364b8904bf26ce030a4ff7134aeff0046e3511cbaf855f65583c  numpy-1.21.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    f7a0ed76e49c4ab6c53aa43358aa1d943ea5f61cc71844eca1cad8f00794589e  numpy-1.21.0rc2-cp39-cp39-win32.whl
    e2d6388fe28784301fb8293a14d05a5329a9747fa8e451cc189e5f2ee1f422dd  numpy-1.21.0rc2-cp39-cp39-win_amd64.whl
    5a711fbc9bbdb939d082bb856f9812eb3f98a82584ad73eaa924bed6b0695cab  numpy-1.21.0rc2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    e708211e58a32e11ee3b810aa78751776b3723c60edc8dcbadfdd00dab3dc32b  numpy-1.21.0rc2.tar.gz
    cb725aae7c31327e642b876e3195b7fe147bb8d14d85f749ac13ab87d9ab5fab  numpy-1.21.0rc2.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.21.0-changelog.rst(63.18 KB)
    numpy-1.21.0rc2.tar.gz(7.96 MB)
    numpy-1.21.0rc2.zip(8.57 MB)
    README.rst(28.56 KB)
  • v1.21.0rc1(May 24, 2021)

    NumPy 1.21.0 Release Notes

    The NumPy 1.21.0 release highlights are

    • continued SIMD work covering more functions and platforms,
    • initial work on the new dtype infrastructure and casting,
    • improved documentation,
    • improved annotations,
    • the new PCG64DXSM bitgenerator for random numbers.

    In addition there are the usual large number of bug fixes and other improvements.

    The Python versions supported for this release are 3.7-3.9. Official support for Python 3.10 will be added when it is released.

    New functions

    Add PCG64DXSM BitGenerator

    Uses of the PCG64 BitGenerator in a massively-parallel context have been shown to have statistical weaknesses that were not apparent at the first release in numpy 1.17. Most users will never observe this weakness and are safe to continue to use PCG64. We have introduced a new PCG64DXSM BitGenerator that will eventually become the new default BitGenerator implementation used by default_rng in future releases. PCG64DXSM solves the statistical weakness while preserving the performance and the features of PCG64.

    See upgrading-pcg64{.interpreted-text role="ref"} for more details.

    (gh-18906)

    Expired deprecations

    • The shape argument of numpy.unravel_index cannot be passed as dims keyword argument anymore. (Was deprecated in NumPy 1.16.)

      (gh-17900)

    • The function PyUFunc_GenericFunction has been disabled. It was deprecated in NumPy 1.19. Users should call the ufunc directly using the Python API.

      (gh-18697)

    • The function PyUFunc_SetUsesArraysAsData has been disabled. It was deprecated in NumPy 1.19.

      (gh-18697)

    • The class PolyBase has been removed (deprecated in numpy 1.9.0). Please use the abstract ABCPolyBase class instead.

      (gh-18963)

    • The unused PolyError and PolyDomainError exceptions are removed.

      (gh-18963)

    Deprecations

    Inexact matches for numpy.convolve and numpy.correlate are deprecated

    numpy.convolve and numpy.correlate now emit a warning when there are case insensitive and/or inexact matches found for mode argument in the functions. Pass full "same", "valid", "full" strings instead of "s", "v", "f" for the mode argument.

    (gh-17492)

    np.typeDict has been formally deprecated

    np.typeDict is a deprecated alias for np.sctypeDict and has been so for over 14 years (6689502). A deprecation warning will now be issued whenever getting np.typeDict.

    (gh-17586)

    Exceptions will be raised during array-like creation

    When an object raised an exception during access of the special attributes __array__ or __array_interface__, this exception was usually ignored. A warning is now given when the exception is anything but AttributeError. To silence the warning, the type raising the exception has to be adapted to raise an AttributeError.

    (gh-19001)

    Four ndarray.ctypes methods have been deprecated

    Four methods of the ndarray.ctypes object have been deprecated, as they are (undocumentated) implementation artifacts of their respective properties.

    The methods in question are:

    • _ctypes.get_data (use _ctypes.data instead)
    • _ctypes.get_shape (use _ctypes.shape instead)
    • _ctypes.get_strides (use _ctypes.strides instead)
    • _ctypes.get_as_parameter (use _ctypes._as_parameter_ instead)

    (gh-19031)

    Future Changes

    Promotion of strings with numbers and bools will be deprecated

    Any promotion of numbers and strings is deprecated and will give a FutureWarning the main affected functionalities are:

    • numpy.promote_types and numpy.result_type which will raise an error in this case in the future.
    • numpy.concatenate will raise an error when concatenating a string and numeric array. You can use dtype="S" to explicitly request a string result.
    • numpy.array and related functions will start returning object arrays because these functions use object as a fallback when no common dtype can be found. However, it may happen that future releases of NumPy will generally error in these cases.

    This will mainly affect code such as:

    np.asarray(['string', 0])
    

    and:

    np.concatenate((['string'], [0]))
    

    in both cases adding dtype="U" or dtype="S" will give the previous (string) result, while dtype=object will ensure an array with object dtype is returned.

    Comparisons, universal functions, and casting are not affected by this.

    (gh-18116)

    Compatibility notes

    Error type changes in universal functions

    The universal functions may now raise different errors on invalid input in some cases. The main changes should be that a RuntimeError was replaced with a more fitting TypeError. When multiple errors were present in the same call, NumPy may now raise a different one.

    (gh-15271)

    __array_ufunc__ argument validation

    NumPy will now partially validate arguments before calling __array_ufunc__. Previously, it was possible to pass on invalid arguments (such as a non-existing keyword argument) when dispatch was known to occur.

    (gh-15271)

    __array_ufunc__ and additional positional arguments

    Previously, all positionally passed arguments were checked for __array_ufunc__ support. In the case of reduce, accumulate, and reduceat all arguments may be passed by position. This means that when they were passed by position, they could previously have been asked to handle the ufunc call via __array_ufunc__. Since this depended on the way the arguments were passed (by position or by keyword), NumPy will now only dispatch on the input and output array. For example, NumPy will never dispatch on the where array in a reduction such as np.add.reduce.

    (gh-15271)

    Validate input values in Generator.uniform

    Checked that high - low >= 0 in np.random.Generator.uniform. Raises ValueError if low > high. Previously out-of-order inputs were accepted and silently swapped, so that if low > high, the value generated was high + (low - high) * random().

    (gh-17921)

    /usr/include removed from default include paths

    The default include paths when building a package with numpy.distutils no longer include /usr/include. This path is normally added by the compiler, and hardcoding it can be problematic. In case this causes a problem, please open an issue. A workaround is documented in PR 18658.

    (gh-18658)

    Changes to comparisons with dtype=...

    When the dtype= (or signature) arguments to comparison ufuncs (equal, less, etc.) is used, this will denote the desired output dtype in the future. This means that:

    np.equal(2, 3, dtype=object)

    will give a FutureWarning that it will return an object array in the future, which currently happens for:

    np.equal(None, None, dtype=object)

    due to the fact that np.array(None) is already an object array. (This also happens for some other dtypes.)

    Since comparisons normally only return boolean arrays, providing any other dtype will always raise an error in the future and give a DeprecationWarning now.

    (gh-18718)

    Changes to dtype and signature arguments in ufuncs

    The universal function arguments dtype and signature which are also valid for reduction such as np.add.reduce (which is the implementation for np.sum) will now issue a warning when the dtype provided is not a "basic" dtype.

    NumPy almost always ignored metadata, byteorder or time units on these inputs. NumPy will now always ignore it and raise an error if byteorder or time unit changed. The following are the most important examples of changes which will give the error. In some cases previously the information stored was not ignored, in all of these an error is now raised:

    # Previously ignored the byte-order (affect if non-native)
    np.add(3, 5, dtype=">i32")
    
    # The biggest impact is for timedelta or datetimes:
    arr = np.arange(10, dtype="m8[s]")
    # The examples always ignored the time unit "ns":
    np.add(arr, arr, dtype="m8[ns]")
    np.maximum.reduce(arr, dtype="m8[ns]")
    
    # The following previously did use "ns" (as opposed to `arr.dtype`)
    np.add(3, 5, dtype="m8[ns]")  # Now return generic time units
    np.maximum(arr, arr, dtype="m8[ns]")  # Now returns "s" (from `arr`)
    

    The same applies for functions like np.sum which use these internally. This change is necessary to achieve consistent handling within NumPy.

    If you run into these, in most cases pass for example dtype=np.timedelta64 which clearly denotes a general timedelta64 without any unit or byte-order defined. If you need to specify the output dtype precisely, you may do so by either casting the inputs or providing an output array using out=.

    NumPy may choose to allow providing an exact output dtype here in the future, which would be preceded by a FutureWarning.

    (gh-18718)

    Ufunc signature=... and dtype= generalization and casting

    The behaviour for np.ufunc(1.0, 1.0, signature=...) or np.ufunc(1.0, 1.0, dtype=...) can now yield different loops in 1.21 compared to 1.20 because of changes in promotion. When signature was previously used, the casting check on inputs was relaxed, which could lead to downcasting inputs unsafely especially if combined with casting="unsafe".

    Casting is now guaranteed to be safe. If a signature is only partially provided, for example using signature=("float64", None, None), this could lead to no loop being found (an error). In that case, it is necessary to provide the complete signature to enforce casting the inputs. If dtype="float64" is used or only outputs are set (e.g. signature=(None, None, "float64") the is unchanged. We expect that very few users are affected by this change.

    Further, the meaning of dtype="float64" has been slightly modified and now strictly enforces only the correct output (and not input) DTypes. This means it is now always equivalent to:

    signature=(None, None, "float64")
    

    (If the ufunc has two inputs and one output). Since this could lead to no loop being found in some cases, NumPy will normally also search for the loop:

    signature=("float64", "float64", "float64")
    

    if the first search failed. In the future, this behaviour may be customized to achieve the expected results for more complex ufuncs. (For some universal functions such as np.ldexp inputs can have different DTypes.)

    (gh-18880)

    Distutils forces strict floating point model on clang

    NumPy distutils will now always add the -ffp-exception-behavior=strict compiler flag when compiling with clang. Clang defaults to a non-strict version, which allows the compiler to generate code that does not set floating point warnings/errors correctly.

    (gh-19049)

    C API changes

    Use of ufunc->type_resolver and "type tuple"

    NumPy now normalizes the "type tuple" argument to the type resolver functions before calling it. Note that in the use of this type resolver is legacy behaviour and NumPy will not do so when possible. Calling ufunc->type_resolver or PyUFunc_DefaultTypeResolver is strongly discouraged and will now enforce a normalized type tuple if done. Note that this does not affect providing a type resolver, which is expected to keep working in most circumstances. If you have an unexpected use-case for calling the type resolver, please inform the NumPy developers so that a solution can be found.

    (gh-18718)

    New Features

    Added a mypy plugin for handling platform-specific numpy.number precisions

    A mypy plugin is now available for automatically assigning the (platform-dependent) precisions of certain numpy.number subclasses, including the likes of numpy.int_, numpy.intp and numpy.longlong. See the documentation on scalar types <arrays.scalars.built-in>{.interpreted-text role="ref"} for a comprehensive overview of the affected classes.

    Note that while usage of the plugin is completely optional, without it the precision of above-mentioned classes will be inferred as typing.Any.

    To enable the plugin, one must add it to their mypy configuration file:

    [mypy]
    plugins = numpy.typing.mypy_plugin
    

    (gh-17843)

    Let the mypy plugin manage extended-precision numpy.number subclasses

    The mypy plugin, introduced in numpy/numpy#17843, has been expanded: the plugin now removes annotations for platform-specific extended-precision types that are not available to the platform in question. For example, it will remove numpy.float128 when not available.

    Without the plugin all extended-precision types will, as far as mypy is concerned, be available on all platforms.

    To enable the plugin, one must add it to their mypy configuration file:

    [mypy]
    plugins = numpy.typing.mypy_plugin
    

    (gh-18322)

    New min_digits argument for printing float values

    A new min_digits argument has been added to the dragon4 float printing functions numpy.format_float_positional and numpy.format_float_scientific . This kwd guarantees that at least the given number of digits will be printed when printing in unique=True mode, even if the extra digits are unnecessary to uniquely specify the value. It is the counterpart to the precision argument which sets the maximum number of digits to be printed. When unique=False in fixed precision mode, it has no effect and the precision argument fixes the number of digits.

    (gh-18629)

    f2py now recognizes Fortran abstract interface blocks

    numpy.f2py can now parse abstract interface blocks.

    (gh-18695)

    BLAS and LAPACK configuration via environment variables

    Autodetection of installed BLAS and LAPACK libraries can be bypassed by using the NPY_BLAS_LIBS and NPY_LAPACK_LIBS environment variables. Instead, the link flags in these environment variables will be used directly, and the language is assumed to be F77. This is especially useful in automated builds where the BLAS and LAPACK that are installed are known exactly. A use case is replacing the actual implementation at runtime via stub library links.

    If NPY_CBLAS_LIBS is set (optional in addition to NPY_BLAS_LIBS), this will be used as well, by defining HAVE_CBLAS and appending the environment variable content to the link flags.

    (gh-18737)

    A runtime-subcriptable alias has been added for ndarray

    numpy.typing.NDArray has been added, a runtime-subscriptable alias for np.ndarray[Any, np.dtype[~Scalar]]. The new type alias can be used for annotating arrays with a given dtype and unspecified shape. ^1^

    ^1^ NumPy does not support the annotating of array shapes as of 1.21, this is expected to change in the future though (see 646{.interpreted-text role="pep"}).

    Examples

    >>> import numpy as np
    >>> import numpy.typing as npt
    
    >>> print(npt.NDArray)
    numpy.ndarray[typing.Any, numpy.dtype[~ScalarType]]
    
    >>> print(npt.NDArray[np.float64])
    numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
    
    >>> NDArrayInt = npt.NDArray[np.int_]
    >>> a: NDArrayInt = np.arange(10)
    
    >>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]:
    ...     return np.array(a)
    

    (gh-18935)

    Improvements

    Arbitrary period option for numpy.unwrap

    The size of the interval over which phases are unwrapped is no longer restricted to 2 * pi. This is especially useful for unwrapping degrees, but can also be used for other intervals.

    >>> phase_deg = np.mod(np.linspace(0,720,19), 360) - 180
    >>> phase_deg
    array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
           -180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
           -180.])
    
    >>> unwrap(phase_deg, period=360)
    array([-180., -140., -100.,  -60.,  -20.,   20.,   60.,  100.,  140.,
            180.,  220.,  260.,  300.,  340.,  380.,  420.,  460.,  500.,
            540.])
    

    (gh-16987)

    np.unique now returns single NaN

    When np.unique operated on an array with multiple NaN entries, its return included a NaN for each entry that was NaN in the original array. This is now improved such that the returned array contains just one NaN as the last element.

    Also for complex arrays all NaN values are considered equivalent (no matter whether the NaN is in the real or imaginary part). As the representant for the returned array the smallest one in the lexicographical order is chosen - see np.sort for how the lexicographical order is defined for complex arrays.

    (gh-18070)

    Generator.rayleigh and Generator.geometric performance improved

    The performance of Rayleigh and geometric random variate generation in Generator has improved. These are both transformation of exponential random variables and the slow log-based inverse cdf transformation has been replaced with the Ziggurat-based exponential variate generator.

    This change breaks the stream of variates generated when variates from either of these distributions are produced.

    (gh-18666)

    Placeholder annotations have been improved

    All placeholder annotations, that were previously annotated as typing.Any, have been improved. Where appropiate they have been replaced with explicit function definitions, classes or other miscellaneous objects.

    (gh-18934)

    Performance improvements

    Improved performance in integer division of NumPy arrays

    Integer division of NumPy arrays now uses libdivide when the divisor is a constant. With the usage of libdivide and other minor optimizations, there is a large speedup. The // operator and np.floor_divide makes use of the new changes.

    (gh-17727)

    Improve performance of np.save and np.load for small arrays

    np.save is now a lot faster for small arrays.

    np.load is also faster for small arrays, but only when serializing with a version >= (3, 0).

    Both are done by removing checks that are only relevant for Python 2, while still maintaining compatibility with arrays which might have been created by Python 2.

    (gh-18657)

    Changes

    numpy.piecewise output class now matches the input class

    When numpy.ndarray subclasses are used on input to numpy.piecewise, they are passed on to the functions. The output will now be of the same subclass as well.

    (gh-18110)

    Enable Accelerate Framework

    With the release of macOS 11.3, several different issues that numpy was encountering when using Accelerate Framework's implementation of BLAS and LAPACK should be resolved. This change enables the Accelerate Framework as an option on macOS. If additional issues are found, please file a bug report against Accelerate using the developer feedback assistant tool (https://developer.apple.com/bug-reporting/). We intend to address issues promptly and plan to continue supporting and updating our BLAS and LAPACK libraries.

    (gh-18874)

    Checksums

    MD5

    9ccf85701eb21a5ea2fb477136ab4247  numpy-1.21.0rc1-cp37-cp37m-macosx_10_9_x86_64.whl
    5efabc4661fe181dc6e1c65ec635f469  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    15dba3c0e6a1018d964101dd0da643f0  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    2d950f3681f6ca81446e1ef1ce965000  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7f6754af0b06c1847a92430fb34f49ca  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    26a2ed6c94f1e679e2356c2e34d5bca0  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    f83946bc549f52967ad167770ce7f028  numpy-1.21.0rc1-cp37-cp37m-win32.whl
    745946f9036969a4574f5dfcdbf73d00  numpy-1.21.0rc1-cp37-cp37m-win_amd64.whl
    9aec39edd809b0ce0f024511ad670892  numpy-1.21.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
    11cce9128d4c41675383ff5ffebc5f80  numpy-1.21.0rc1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    b9baa8e1cc031b8f63122e056f5a9d01  numpy-1.21.0rc1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    ed671703310ffc4a446c9a7b2227045c  numpy-1.21.0rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    77dfe86f5af5702c6115cec33211a5d0  numpy-1.21.0rc1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    84971cae75e47951f451b889958220f7  numpy-1.21.0rc1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    566c652f9cdb10f55777f030ce857824  numpy-1.21.0rc1-cp38-cp38-win32.whl
    c09a49c8aef8a87267322343a1abaaf2  numpy-1.21.0rc1-cp38-cp38-win_amd64.whl
    7755038d0c4a996c912c967b34a2aaff  numpy-1.21.0rc1-cp39-cp39-macosx_10_9_universal2.whl
    a51746adf928b66b7ce6f51afe87fa5f  numpy-1.21.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
    3da1f90027f433e13cef63d12bdc6142  numpy-1.21.0rc1-cp39-cp39-macosx_11_0_arm64.whl
    eff3767616a49ca7bec3f44476f07be8  numpy-1.21.0rc1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    c09d61a8afbc1ae1ffa5a4ba0f53616b  numpy-1.21.0rc1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    7861468db5b918ee7188871daad34f1a  numpy-1.21.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    9d416859d0fe38b80d63ea1e368133d9  numpy-1.21.0rc1-cp39-cp39-win32.whl
    d92e6574a0656f170d76f377f41f8dd3  numpy-1.21.0rc1-cp39-cp39-win_amd64.whl
    8d8aa5cab5d2e6d94a4a09c33461776e  numpy-1.21.0rc1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    32a9675f747267c5e0bbe87a79ecc31b  numpy-1.21.0rc1.tar.gz
    2369c08c213ba96377b33fe90f53c509  numpy-1.21.0rc1.zip
    

    SHA256

    19e076e4d9b66fd63477e907ed2a4c6662bbcd5a74b2cf50a9b0753afb4ee167  numpy-1.21.0rc1-cp37-cp37m-macosx_10_9_x86_64.whl
    8b92d27414779f568484c4a0aeddbff8e1fa9d9403cff122161fa25bc94e7f44  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    a1c3737f659085eeaab83e016569368157d8d46d6a3be317c864dadd3c28fa42  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    35180d82f457f0857963a486c16bd472582f217827c839dcb3a3de298b532f11  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    438129e0d1dd03d235ae25c45b5621888d699935cf5b813d08a0bb2e7221c9d4  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
    63b3d66f5610c61d3d1b47687b99584fdf7734192344814d80f2670e0c7b05ef  numpy-1.21.0rc1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    4c6395cc3eefdd1c9ede1c84ad8e728edfc97ea506b04b9600d4cb61c7b80cb4  numpy-1.21.0rc1-cp37-cp37m-win32.whl
    9abfe8ef4f8898d0448de735a3270de466553b61de8e6ddc31fc8770003fdfa4  numpy-1.21.0rc1-cp37-cp37m-win_amd64.whl
    7ada705e3e9364f874c41fc370c23247f4c1466888dfd61ac5ec9277524928c2  numpy-1.21.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
    6ed13704d67934d458abeaacd96079bb8ae5f0ea000765777449e94288590097  numpy-1.21.0rc1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    305aff30d8976eccf14751a1095dac0e60e0c071f1fb82e6c53948fc5b6b346c  numpy-1.21.0rc1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    a3a480ac4077c868124427456c6a64dcb7da12817bd3e770006980a4fd0d2526  numpy-1.21.0rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    80929da75a678433dcc8c79db94eb373408778d17fe9b49c4521501a5923a3e2  numpy-1.21.0rc1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
    234fc98750ada00204ebf3acd94baea213c6f9f0ff6b097d06952f734f67e58a  numpy-1.21.0rc1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    da0797286c299c426e5b6cf03ca9e1dab0dace161b64d7a1879c4d15eb12ceba  numpy-1.21.0rc1-cp38-cp38-win32.whl
    17f3ac57e19740f1c064c284ad361148be245fabbd6390bec3ffa814fb287fd6  numpy-1.21.0rc1-cp38-cp38-win_amd64.whl
    57410c33aef7b3fd4ef2e5f09f1c084a21021055c74034748b8d2957a72dad01  numpy-1.21.0rc1-cp39-cp39-macosx_10_9_universal2.whl
    4796c196faa5f5418ce9a8ee0e993c925755e505778e32442263422c4fe88013  numpy-1.21.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
    97faf00577c74a4f4b6304c1b7f6223fb0825d1a7cfaad5601cbeadd8282cd70  numpy-1.21.0rc1-cp39-cp39-macosx_11_0_arm64.whl
    56d67935694d9270e0a9bcfd6b9169f81ef2c2e5e154acd57ac7afe2d48d7b29  numpy-1.21.0rc1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    b58c8c1ea4b80a5cbc756a11e446eec16088ebd9e080e71a64c458f6c07cb3c7  numpy-1.21.0rc1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    723fff54844d9c1e01703ed2bc177f892fd89530b7671e8191a639d799cd75b7  numpy-1.21.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    dcc194082d94c45fe8a005861cdce6ec33b51c1dccf2a7e6044b33038b82f579  numpy-1.21.0rc1-cp39-cp39-win32.whl
    ff442e4fe6e66019b2070352e0cd6e7dde994ff1267d45343b587ed621e4ec47  numpy-1.21.0rc1-cp39-cp39-win_amd64.whl
    068cfc78963ce8b9dd2dc7ad1f2d5ebebc47e10103ea0166074e6bd31e78aeb8  numpy-1.21.0rc1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    3baf619f71612da80628e63def8d901832f76a9d396fde2613ea3d73277bc08d  numpy-1.21.0rc1.tar.gz
    f5e7cd7068df4aa803be68edc7c6fc5e3ed934d53a7ab1f21539fb5925e0172e  numpy-1.21.0rc1.zip
    
    Source code(tar.gz)
    Source code(zip)
    1.21.0-changelog.rst(62.05 KB)
    numpy-1.21.0rc1.tar.gz(7.95 MB)
    numpy-1.21.0rc1.zip(8.56 MB)
    README.rst(28.24 KB)
Python implementation of 3D facial mesh exaggeration using the techniques described in the paper: Computational Caricaturization of Surfaces.

Python implementation of 3D facial mesh exaggeration using the techniques described in the paper: Computational Caricaturization of Surfaces.

Wonjong Jang 8 Nov 01, 2022
PyTorch implementation of DARDet: A Dense Anchor-free Rotated Object Detector in Aerial Images

DARDet PyTorch implementation of "DARDet: A Dense Anchor-free Rotated Object Detector in Aerial Images", [pdf]. Highlights: 1. We develop a new dense

41 Oct 23, 2022
Generative code template for PixelBeasts 10k NFT project.

generator-template Generative code template for combining transparent png attributes into 10,000 unique images. Used for the PixelBeasts 10k NFT proje

Yohei Nakajima 9 Aug 24, 2022
Matthew Colbrook 1 Apr 08, 2022
NeuralForecast is a Python library for time series forecasting with deep learning models

NeuralForecast is a Python library for time series forecasting with deep learning models. It includes benchmark datasets, data-loading utilities, evaluation functions, statistical tests, univariate m

Nixtla 1.1k Jan 03, 2023
Histology images query (unsupervised)

110-1-NTU-DBME5028-Histology-images-query Final Project: Histology images query (unsupervised) Kaggle: https://www.kaggle.com/c/histology-images-query

1 Jan 05, 2022
ManimML is a project focused on providing animations and visualizations of common machine learning concepts with the Manim Community Library.

ManimML ManimML is a project focused on providing animations and visualizations of common machine learning concepts with the Manim Community Library.

259 Jan 04, 2023
[CVPR 2022 Oral] Crafting Better Contrastive Views for Siamese Representation Learning

Crafting Better Contrastive Views for Siamese Representation Learning (CVPR 2022 Oral) 2022-03-29: The paper was selected as a CVPR 2022 Oral paper! 2

249 Dec 28, 2022
🏖 Keras Implementation of Painting outside the box

Keras implementation of Image OutPainting This is an implementation of Painting Outside the Box: Image Outpainting paper from Standford University. So

Bendang 1.1k Dec 10, 2022
【steal piano】GitHub偷情分析工具!

【steal piano】GitHub偷情分析工具! 你是否有这样的困扰,有一天你的仓库被很多人加了star,但是你却不知道这些人都是从哪来的? 别担心,GitHub偷情分析工具帮你轻松解决问题! 原理 GitHub偷情分析工具透过分析star的时间以及他们之间的follow关系,可以推测出每个st

黄巍 442 Dec 21, 2022
Code for MarioNette: Self-Supervised Sprite Learning, in NeurIPS 2021

MarioNette | Webpage | Paper | Video MarioNette: Self-Supervised Sprite Learning Dmitriy Smirnov, Michaël Gharbi, Matthew Fisher, Vitor Guizilini, Ale

Dima Smirnov 28 Nov 18, 2022
Logistic Bandit experiments. Official code for the paper "Jointly Efficient and Optimal Algorithms for Logistic Bandits".

Code for the paper Jointly Efficient and Optimal Algorithms for Logistic Bandits, by Louis Faury, Marc Abeille, Clément Calauzènes and Kwang-Sun Jun.

Faury Louis 1 Jan 22, 2022
Learning-Augmented Dynamic Power Management

Learning-Augmented Dynamic Power Management This repository contains source code accompanying paper Learning-Augmented Dynamic Power Management with M

Adam 0 Feb 22, 2022
Official implementation for the paper "Attentive Prototypes for Source-free Unsupervised Domain Adaptive 3D Object Detection"

Attentive Prototypes for Source-free Unsupervised Domain Adaptive 3D Object Detection PyTorch code release of the paper "Attentive Prototypes for Sour

Deepti Hegde 23 Oct 17, 2022
Synthetic structured data generators

Join us on What is Synthetic Data? Synthetic data is artificially generated data that is not collected from real world events. It replicates the stati

YData 850 Jan 07, 2023
Think Big, Teach Small: Do Language Models Distil Occam’s Razor?

Think Big, Teach Small: Do Language Models Distil Occam’s Razor? Software related to the paper "Think Big, Teach Small: Do Language Models Distil Occa

0 Dec 07, 2021
ChainerRL is a deep reinforcement learning library built on top of Chainer.

ChainerRL and PFRL ChainerRL (this repository) is a deep reinforcement learning library that implements various state-of-the-art deep reinforcement al

Chainer 1.1k Jan 01, 2023
Hippocampal segmentation using the UNet network for each axis

Hipposeg Hippocampal segmentation using the UNet network for each axis, inspired by https://github.com/MICLab-Unicamp/e2dhipseg Red: False Positive Gr

Juan Carlos Aguirre Arango 0 Sep 02, 2021
This repository contains a PyTorch implementation of the paper Learning to Assimilate in Chaotic Dynamical Systems.

Amortized Assimilation This repository contains a PyTorch implementation of the paper Learning to Assimilate in Chaotic Dynamical Systems. Abstract: T

4 Aug 16, 2022
This is the code of NeurIPS'21 paper "Towards Enabling Meta-Learning from Target Models".

ST This is the code of NeurIPS 2021 paper "Towards Enabling Meta-Learning from Target Models". If you use any content of this repo for your work, plea

Su Lu 7 Dec 06, 2022