Release Notes¶
- 1.20.0
- 1.19.1
- 1.19.0
- Highlights
- Expired deprecations
- Compatibility notes
- Changed random variate stream from
numpy.random.Generator.dirichlet - Scalar promotion in
PyArray_ConvertToCommonType - Fasttake and fastputmask slots are deprecated and NULL’ed
np.ediff1dcasting behaviour withto_endandto_begin- Converting of empty array-like objects to NumPy arrays
- Removed
multiarray.int_asbuffer numpy.distutils.compathas been removedissubdtypeno longer interpretsfloatasnp.floating- Change output of
roundon scalars to be consistent with Python - The
numpy.ndarrayconstructor no longer interpretsstrides=()asstrides=None - C-Level string to datetime casts changed
SeedSequencewith small seeds no longer conflicts with spawning
- Changed random variate stream from
- Deprecations
- Deprecate automatic
dtype=objectfor ragged input - Passing
shape=0to factory functions innumpy.recis deprecated - Deprecation of probably unused C-API functions
- Converting certain types to dtypes is Deprecated
- Deprecation of
roundfornp.complexfloatingscalars numpy.ndarray.tostring()is deprecated in favor oftobytes()
- Deprecate automatic
- C API changes
- New Features
- Improvements
- Improve detection of CPU features
- Changes
- 1.18.4
- 1.18.3
- 1.18.2
- 1.18.1
- 1.18.0
- Highlights
- New functions
- Deprecations
- Expired deprecations
- Compatibility notes
numpy.lib.recfunctions.drop_fieldscan no longer return Nonenumpy.argmin/argmax/min/maxreturnsNaTif it exists in arraynp.can_cast(np.uint64, np.timedelta64, casting='safe')is nowFalse- Changed random variate stream from
numpy.random.Generator.integers - Add more ufunc loops for
datetime64,timedelta64 - Moved modules in
numpy.random
- C API changes
- New Features
- Improvements
- Different C numeric types of the same size have unique names
argwherenow produces a consistent result on 0d arrays- Add
axisargument forrandom.permutationandrandom.shuffle methodkeyword argument fornp.random.multivariate_normal- Add complex number support for
numpy.fromstring numpy.uniquehas consistent axes order whenaxisis not Nonenumpy.matmulwith boolean output now converts to boolean valuesnumpy.random.randintproduced incorrect value when the range was2**32- Add complex number support for
numpy.fromfile std=c99added if compiler is namedgcc
- Changes
NaTnow sorts to the end of arrays- Incorrect
thresholdinnp.set_printoptionsraisesTypeErrororValueError - Warn when saving a dtype with metadata
numpy.distutilsappend behavior changed for LDFLAGS and similar- Remove
numpy.random.entropywithout a deprecation - Add options to quiet build configuration and build with
-Werror
- 1.17.5
- 1.17.4
- 1.17.3
- 1.17.2
- 1.17.1
- 1.17.0
- Highlights
- New functions
- Deprecations
- Future Changes
- Compatibility notes
float16subnormal rounding- Signed zero when using divmod
MaskedArray.masknow returns a view of the mask, not the mask itself- Do not lookup
__buffer__attribute innumpy.frombuffer outis buffered for memory overlaps intake,choose,put- Unpickling while loading requires explicit opt-in
- Potential changes to the random stream in old random module
i0now always returns a result with the same shape as the inputcan_castno longer assumes all unsafe casting is allowedndarray.flags.writeablecan be switched to true slightly more often
- C API changes
- New Features
- New extensible
numpy.randommodule with selectable random number generators - libFLAME
- User-defined BLAS detection order
- User-defined LAPACK detection order
ufunc.reduceand related functions now accept awheremask- Timsort and radix sort have replaced mergesort for stable sorting
packbitsandunpackbitsaccept anorderkeywordunpackbitsnow accepts acountparameterlinalg.svdandlinalg.pinvcan be faster on hermitian inputs- divmod operation is now supported for two
timedelta64operands fromfilenow takes anoffsetargument- New mode “empty” for
pad empty_likeand related functions now accept ashapeargument- Floating point scalars implement
as_integer_ratioto match the builtin float - Structured
dtypeobjects can be indexed with multiple fields names .npyfiles support unicode field names
- New extensible
- Improvements
- Array comparison assertions include maximum differences
- Replacement of the fftpack based
fftmodule by the pocketfft library - Further improvements to
ctypessupport innumpy.ctypeslib numpy.errstateis now also a function decoratornumpy.expandnumpy.logspeed up for float32 implementation- Improve performance of
numpy.pad numpy.interphandles infinities more robustly- Pathlib support for
fromfile, tofile andndarray.dump - Specialized
isnan,isinf, andisfiniteufuncs for bool and int types isfinitesupportsdatetime64andtimedelta64types- New keywords added to
nan_to_num - MemoryErrors caused by allocated overly large arrays are more descriptive
floor,ceil, andtruncnow respect builtin magic methodsquantilenow works on fraction.Fraction anddecimal.Decimalobjects- Support of object arrays in
matmul
- Changes
medianandpercentilefamily of functions no longer warn aboutnantimedelta64 % 0behavior adjusted to returnNaT- NumPy functions now always support overrides with
__array_function__ lib.recfunctions.structured_to_unstructureddoes not squeeze single-field viewsclipnow uses a ufunc under the hood__array_interface__offset now works as documented- Pickle protocol in
savezset to 3 forforce zip64flag - Structured arrays indexed with non-existent fields raise
KeyErrornotValueError
- 1.16.6
- 1.16.5
- 1.16.4
- 1.16.3
- 1.16.2
- 1.16.1
- 1.16.0
- Highlights
- New functions
- New deprecations
- Expired deprecations
- Future changes
- Compatibility notes
- C API changes
- New Features
- Improvements
- no-copy pickling of numpy arrays
- build shell independence
- np.polynomial.Polynomial classes render in LaTeX in Jupyter notebooks
randintandchoicenow work on empty distributionslinalg.lstsq,linalg.qr, andlinalg.svdnow work with empty arrays- Chain exceptions to give better error messages for invalid PEP3118 format strings
- Einsum optimization path updates and efficiency improvements
numpy.angleandnumpy.expand_dimsnow work onndarraysubclassesNPY_NO_DEPRECATED_APIcompiler warning suppressionnp.diffAdded kwargs prepend and append- ARM support updated
- Appending to build flags
- Generalized ufunc signatures now allow fixed-size dimensions
- Generalized ufunc signatures now allow flexible dimensions
np.clipand theclipmethod check for memory overlap- New value
unscaledfor optioncovinnp.polyfit - Detailed docstrings for scalar numeric types
__module__attribute now points to public modules- Large allocations marked as suitable for transparent hugepages
- Alpine Linux (and other musl c library distros) support
- Speedup
np.blockfor large arrays - Speedup
np.takefor read-only arrays - Support path-like objects for more functions
- Better behaviour of ufunc identities during reductions
- Improved conversion from ctypes objects
- A new
ndpointer.contentsmember matmulis now aufunc- Start and stop arrays for
linspace,logspaceandgeomspace - CI extended with additional services
- Changes
- Comparison ufuncs will now error rather than return NotImplemented
- Positive will now raise a deprecation warning for non-numerical arrays
NDArrayOperatorsMixinnow implements matrix multiplication- The scaling of the covariance matrix in
np.polyfitis different maximumandminimumno longer emit warnings- Umath and multiarray c-extension modules merged into a single module
getfieldvalidity checks extended- NumPy functions now support overrides with
__array_function__ - Arrays based off readonly buffers cannot be set
writeable
- 1.15.4
- 1.15.3
- 1.15.2
- 1.15.1
- 1.15.0
- Highlights
- New functions
- Deprecations
- Future Changes
- Compatibility notes
- Compiled testing modules renamed and made private
- The
NpzFilereturned bynp.savezis now acollections.abc.Mapping - Under certain conditions,
nditermust be used in a context manager - Numpy has switched to using pytest instead of nose for testing
- Numpy no longer monkey-patches
ctypeswith__array_interface__ np.ma.notmasked_contiguousandnp.ma.flatnotmasked_contiguousalways return listsnp.squeezerestores old behavior of objects that cannot handle anaxisargument- unstructured void array’s
.itemmethod now returns a bytes object copy.copyandcopy.deepcopyno longer turnmaskedinto an array- Multifield Indexing of Structured Arrays will still return a copy
- C API changes
- New Features
- Improvements
np.einsumupdatesnp.ufunc.reduceand related functions now accept an initial valuenp.flipcan operate over multiple axeshistogramandhistogramddfunctions have moved tonp.lib.histogramshistogramwill accept NaN values when explicit bins are givenhistogramworks on datetime types, when explicit bin edges are givenhistogram“auto” estimator handles limited variance better- The edges retuned by histogram` and
histogramddnow match the data float type histogramddallows explicit ranges to be given in a subset of axes- The normed arguments of
histogramddandhistogram2dhave been renamed np.r_works with 0d arrays, andnp.ma.mr_works withnp.ma.maskednp.ptpaccepts akeepdimsargument, and extended axis tuplesMaskedArray.astypenow is identical tondarray.astype- Enable AVX2/AVX512 at compile time
nan_to_numalways returns scalars when receiving scalar or 0d inputsnp.flatnonzeroworks on numpy-convertible typesnp.interpreturns numpy scalars rather than builtin scalars- Allow dtype field names to be unicode in Python 2
- Comparison ufuncs accept
dtype=object, overriding the defaultbool sortfunctions acceptkind='stable'- Do not make temporary copies for in-place accumulation
linalg.matrix_powercan now handle stacks of matrices- Increased performance in
random.permutationfor multidimensional arrays - Generalized ufuncs now accept
axes,axisandkeepdimsarguments - float128 values now print correctly on ppc systems
- New
np.take_along_axisandnp.put_along_axisfunctions
- 1.14.6
- 1.14.5
- 1.14.4
- 1.14.3
- 1.14.2
- 1.14.1
- 1.14.0
- Highlights
- New functions
- Deprecations
- Future Changes
- Compatibility notes
- The mask of a masked array view is also a view rather than a copy
np.ma.maskedis no longer writeablenp.mafunctions producingfill_values have changeda.flat.__array__()returns non-writeable arrays whenais non-contiguousnp.tensordotnow returns zero array when contracting over 0-length dimensionnumpy.testingreorganizednp.asfarrayno longer accepts non-dtypes through thedtypeargument- 1D
np.linalg.normpreserves float input types, even for arbitrary orders count_nonzero(arr, axis=())now counts over no axes, not all axes__init__.pyfiles added to test directories.astype(bool)on unstructured void arrays now callsboolon each elementMaskedArray.squeezenever returnsnp.ma.masked- Renamed first parameter of
can_castfromfromtofrom_ isnatraisesTypeErrorwhen passed wrong typedtype.__getitem__raisesTypeErrorwhen passed wrong type- User-defined types now need to implement
__str__and__repr__ - Many changes to array printing, disableable with the new “legacy” printing mode
- C API changes
- New Features
- Encoding argument for text IO functions
- External
noseplugins are usable bynumpy.testing.Tester parametrizedecorator added tonumpy.testingchebinterpolatefunction added tonumpy.polynomial.chebyshev- Support for reading lzma compressed text files in Python 3
signoption added tonp.setprintoptionsandnp.array2stringhermitianoption added to``np.linalg.matrix_rank``thresholdandedgeitemsoptions added tonp.array2stringconcatenateandstackgained anoutargument- Support for PGI flang compiler on Windows
- Improvements
- Numerator degrees of freedom in
random.noncentral_fneed only be positive. - The GIL is released for all
np.einsumvariations - The np.einsum function will use BLAS when possible and optimize by default
f2pynow handles arrays of dimension 0numpy.distutilssupports using MSVC and mingw64-gfortran togethernp.linalg.pinvnow works on stacked matricesnumpy.savealigns data to 64 bytes instead of 16- NPZ files now can be written without using temporary files
- Better support for empty structured and string types
- Support for
decimal.Decimalinnp.lib.financial - Float printing now uses “dragon4” algorithm for shortest decimal representation
voiddatatype elements are now printed in hex notation- printing style for
voiddatatypes is now independently customizable - Reduced memory usage of
np.loadtxt
- Numerator degrees of freedom in
- Changes
- Multiple-field indexing/assignment of structured arrays
- Integer and Void scalars are now unaffected by
np.set_string_function - 0d array printing changed,
stylearg of array2string deprecated - Seeding
RandomStateusing an array requires a 1-d array MaskedArrayobjects show a more usefulrepr- The
reprofnp.polynomialclasses is more explicit
- 1.13.3
- 1.13.2
- 1.13.1
- 1.13.0
- Highlights
- New functions
- Deprecations
- Future Changes
- Build System Changes
- Compatibility notes
- C API changes
- New Features
__array_ufunc__added- New
positiveufunc - New
divmodufunc np.isnatufunc tests for NaT special datetime and timedelta valuesnp.heavisideufunc computes the Heaviside functionnp.blockfunction for creating blocked arraysisinfunction, improving onin1d- Temporary elision
axesargument foruniquenp.gradientnow supports unevenly spaced data- Support for returning arrays of arbitrary dimensions in
apply_along_axis .ndimproperty added todtypeto complement.shape- Support for tracemalloc in Python 3.6
- NumPy may be built with relaxed stride checking debugging
- Improvements
- Ufunc behavior for overlapping inputs
- Partial support for 64-bit f2py extensions with MinGW
- Performance improvements for
packbitsandunpackbits - Fix for PPC long double floating point information
- Better default repr for
ndarraysubclasses - More reliable comparisons of masked arrays
- np.matrix with booleans elements can now be created using the string syntax
- More
linalgoperations now accept empty vectors and matrices - Bundled version of LAPACK is now 3.2.2
reduceofnp.hypot.reduceandnp.logical_xorallowed in more cases- Better
reprof object arrays
- Changes
argsorton masked arrays takes the same default arguments assortaveragenow preserves subclassesarray == Noneandarray != Nonedo element-wise comparisonnp.equal, np.not_equalfor object arrays ignores object identity- Boolean indexing changes
np.random.multivariate_normalbehavior with bad covariance matrixassert_array_lesscomparesnp.infand-np.infnowassert_array_and masked arraysassert_equalhide less warningsoffsetattribute value inmemmapobjectsnp.realandnp.imagreturn scalars for scalar inputs- The polynomial convenience classes cannot be passed to ufuncs
- Output arguments to ufuncs can be tuples also for ufunc methods
- 1.12.1
- 1.12.0
- Highlights
- Dropped Support
- Added Support
- Build System Changes
- Deprecations
- Future Changes
- Compatibility notes
- DeprecationWarning to error
- FutureWarning to changed behavior
powerand**raise errors for integer to negative integer powers- Relaxed stride checking is the default
- The
np.percentile‘midpoint’ interpolation method fixed for exact indices keepdimskwarg is passed through to user-class methodsbitwise_andidentity changed- ma.median warns and returns nan when unmasked invalid values are encountered
- Greater consistency in
assert_almost_equal NoseTesterbehaviour of warnings during testingassert_warnsanddeprecateddecorator more specific- C API
- New Features
- Writeable keyword argument for
as_strided axeskeyword argument forrot90- Generalized
flip - BLIS support in
numpy.distutils - Hook in
numpy/__init__.pyto run distribution-specific checks - New nanfunctions
nancumsumandnancumprodadded np.interpcan now interpolate complex values- New polynomial evaluation function
polyvalfromrootsadded - New array creation function
geomspaceadded - New context manager for testing warnings
- New masked array functions
ma.convolveandma.correlateadded - New
float_powerufunc np.loadtxtnow supports a single integer asusecolargument- Improved automated bin estimators for
histogram np.rollcan now roll multiple axes at the same time- The
__complex__method has been implemented for the ndarrays pathlib.Pathobjects now supported- New
bitsattribute fornp.finfo - New
signatureargument tonp.vectorize - Emit py3kwarnings for division of integer arrays
- numpy.sctypes now includes bytes on Python3 too
- Writeable keyword argument for
- Improvements
bitwise_andidentity changed- Generalized Ufuncs will now unlock the GIL
- Caches in np.fft are now bounded in total size and item count
- Improved handling of zero-width string/unicode dtypes
- Integer ufuncs vectorized with AVX2
- Order of operations optimization in
np.einsum - quicksort has been changed to an introsort
ediff1dimproved performance and subclass handling- Improved precision of
ndarray.meanfor float16 arrays
- Changes
- 1.11.3
- 1.11.2
- 1.11.1
- 1.11.0
- Highlights
- Build System Changes
- Future Changes
- Compatibility notes
- New Features
- Improvements
np.gradientnow supports anaxisargumentnp.lexsortnow supports arrays with object data-typenp.ma.core.MaskedArraynow supports anorderargument- Memory and speed improvements for masked arrays
ndarray.tofilenow uses fallocate on linux- Optimizations for operations of the form
A.T @ AandA @ A.T np.testing.assert_warnscan now be used as a context manager- Speed improvement for np.random.shuffle
- Changes
- Deprecations
- FutureWarnings
- 1.10.4
- 1.10.3
- 1.10.2
- 1.10.1
- 1.10.0
- Highlights
- Dropped Support
- Future Changes
- Compatibility notes
- Default casting rule change
- numpy version string
- relaxed stride checking
- Concatenation of 1d arrays along any but
axis=0raisesIndexError - np.ravel, np.diagonal and np.diag now preserve subtypes
- rollaxis and swapaxes always return a view
- nonzero now returns base ndarrays
- C API
- recarray field return types
- recarray views
- ‘out’ keyword argument of ufuncs now accepts tuples of arrays
- byte-array indices now raises an IndexError
- Masked arrays containing objects with arrays
- Median warns and returns nan when invalid values are encountered
- Functions available from numpy.ma.testutils have changed
- New Features
- Reading extra flags from site.cfg
- np.cbrt to compute cube root for real floats
- numpy.distutils now allows parallel compilation
- genfromtxt has a new
max_rowsargument - New function np.broadcast_to for invoking array broadcasting
- New context manager clear_and_catch_warnings for testing warnings
- cov has new
fweightsandaweightsarguments - Support for the ‘@’ operator in Python 3.5+
- New argument
normto fft functions
- Improvements
- np.digitize using binary search
- np.poly now casts integer inputs to float
- np.interp can now be used with periodic functions
- np.pad supports more input types for
pad_widthandconstant_values - np.argmax and np.argmin now support an
outargument - More system C99 complex functions detected and used
- np.loadtxt support for the strings produced by the
float.hexmethod - np.isclose properly handles minimal values of integer dtypes
- np.allclose uses np.isclose internally.
- np.genfromtxt now handles large integers correctly
- np.load, np.save have pickle backward compatibility flags
- MaskedArray support for more complicated base classes
- Changes
- Deprecations
- 1.9.2
- 1.9.1
- 1.9.0
- Highlights
- Dropped Support
- Future Changes
- Compatibility notes
- The diagonal and diag functions return readonly views.
- Special scalar float values don’t cause upcast to double anymore
- Percentile output changes
- ndarray.tofile exception type
- Invalid fill value exceptions
- Polynomial Classes no longer derived from PolyBase
- Using numpy.random.binomial may change the RNG state vs. numpy < 1.9
- Random seed enforced to be a 32 bit unsigned integer
- Argmin and argmax out argument
- Einsum
- Indexing
- Non-integer reduction axis indexes are deprecated
promote_typesand string dtypecan_castand string dtype- astype and string dtype
- npyio.recfromcsv keyword arguments change
- The
doc/swigdirectory moved - The
npy_3kcompat.hheader changed - Negative indices in C-Api
sq_itemandsq_ass_itemsequence methods - NDIter
zeros_likefor string dtypes now returns empty strings
- New Features
- Percentile supports more interpolation options
- Generalized axis support for median and percentile
- Dtype parameter added to
np.linspaceandnp.logspace - More general
np.triuandnp.trilbroadcasting tobytesalias fortostringmethod- Build system
- Compatibility to python
numbersmodule increasingparameter added tonp.vanderunique_countsparameter added tonp.unique- Support for median and percentile in nanfunctions
- NumpyVersion class added
- Allow saving arrays with large number of named columns
- Full broadcasting support for
np.cross
- Improvements
- Better numerical stability for sum in some cases
- Percentile implemented in terms of
np.partition - Performance improvement for
np.array - Performance improvement for
np.searchsorted - Optional reduced verbosity for np.distutils
- Covariance check in
np.random.multivariate_normal - Polynomial Classes no longer template based
- More GIL releases
- MaskedArray support for more complicated base classes
- C-API
- Deprecations
- 1.8.2
- 1.8.1
- 1.8.0
- Highlights
- Dropped Support
- Future Changes
- Compatibility notes
- New Features
- Support for linear algebra on stacked arrays
- In place fancy indexing for ufuncs
- New functions partition and argpartition
- New functions nanmean, nanvar and nanstd
- New functions full and full_like
- IO compatibility with large files
- Building against OpenBLAS
- New constant
- New modes for qr
- New invert argument to in1d
- Advanced indexing using np.newaxis
- C-API
- runtests.py
- Improvements
- Changes
- Deprecations
- Authors
- 1.7.2
- 1.7.1
- 1.7.0
- Highlights
- Compatibility notes
- New features
- Reduction UFuncs Generalize axis= Parameter
- Reduction UFuncs New keepdims= Parameter
- Datetime support
- Custom formatter for printing arrays
- New function numpy.random.choice
- New function isclose
- Preliminary multi-dimensional support in the polynomial package
- Ability to pad rank-n arrays
- New argument to searchsorted
- Build system
- C API
- Changes
- Deprecations
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.0
- 1.3.0