Path to this page:
Subject: CVS commit: pkgsrc/math/py-numpy
From: Kamil Rytarowski
Date: 2016-07-24 17:25:22
Message id: 20160724152522.AAD55FBB5@cvs.NetBSD.org
Log Message:
Upgrade py-numpy from 1.9.2 to 1.11.1
pkgsrc changes:
- swich to the GITHUB framework
- add functional test target
- update local patches
upstream changes:
NumPy 1.11.1 Release Notes
Numpy 1.11.1 supports Python 2.6 - 2.7 and 3.2 - 3.5. It fixes bugs and \
regressions found in Numpy 1.11.0 and includes several build related \
improvements. Wheels for Linux, Windows, and OSX can be found on pypi.
Fixes Merged
#7506 BUG: Make sure numpy imports on python 2.6 when nose is unavailable.
#7530 BUG: Floating exception with invalid axis in np.lexsort.
#7535 BUG: Extend glibc complex trig functions blacklist to glibc < 2.18.
#7551 BUG: Allow graceful recovery for no compiler.
#7558 BUG: Constant padding expected wrong type in constant_values.
#7578 BUG: Fix OverflowError in Python 3.x. in swig interface.
#7590 BLD: Fix configparser.InterpolationSyntaxError.
#7597 BUG: Make np.ma.take work on scalars.
#7608 BUG: linalg.norm(): Don't convert object arrays to float.
#7638 BLD: Correct C compiler customization in system_info.py.
#7654 BUG: ma.median of 1d array should return a scalar.
#7656 BLD: Remove hardcoded Intel compiler flag -xSSE4.2.
#7660 BUG: Temporary fix for str(mvoid) for object field types.
#7665 BUG: Fix incorrect printing of 1D masked arrays.
#7670 BUG: Correct initial index estimate in histogram.
#7671 BUG: Boolean assignment no GIL release when transfer needs API.
#7676 BUG: Fix handling of right edge of final histogram bin.
#7680 BUG: Fix np.clip bug NaN handling for Visual Studio 2015.
#7724 BUG: Fix segfaults in np.random.shuffle.
#7731 MAINT: Change mkl_info.dir_env_var from MKL to MKLROOT.
#7737 BUG: Fix issue on OS X with Python 3.x, npymath.ini not installed.
NumPy 1.11.0 Release Notes
This release supports Python 2.6 - 2.7 and 3.2 - 3.5 and contains a number of \
enhancements and improvements. Note also the build system changes listed below \
as they may have subtle effects.
No Windows (TM) binaries are provided for this release due to a broken \
toolchain. One of the providers of Python packages for Windows (TM) is your best \
bet.
Highlights
Details of these improvements can be found below.
The datetime64 type is now timezone naive.
A dtype parameter has been added to randint.
Improved detection of two arrays possibly sharing memory.
Automatic bin size estimation for np.histogram.
Speed optimization of A @ A.T and dot(A, A.T).
New function np.moveaxis for reordering array axes.
Build System Changes
Numpy now uses setuptools for its builds instead of plain distutils. This \
fixes usage of install_requires='numpy' in the setup.py files of projects that \
depend on Numpy (see gh-6551). It potentially affects the way that build/install \
methods for Numpy itself behave though. Please report any unexpected behavior on \
the Numpy issue tracker.
Bento build support and related files have been removed.
Single file build support and related files have been removed.
Future Changes
The following changes are scheduled for Numpy 1.12.0.
Support for Python 2.6, 3.2, and 3.3 will be dropped.
Relaxed stride checking will become the default. See the 1.8.0 release notes \
for a more extended discussion of what this change implies.
The behavior of the datetime64 "not a time" (NaT) value will be \
changed to match that of floating point "not a number" (NaN) values: \
all comparisons involving NaT will return False, except for NaT != NaT which \
will return True.
Indexing with floats will raise IndexError, e.g., a[0, 0.0].
Indexing with non-integer array_like will raise IndexError, e.g., a['1', '2']
Indexing with multiple ellipsis will raise IndexError, e.g., a[..., ...].
Non-integers used as index values will raise TypeError, e.g., in reshape, \
take, and specifying reduce axis.
In a future release the following changes will be made.
The rand function exposed in numpy.testing will be removed. That function is \
left over from early Numpy and was implemented using the Python random module. \
The random number generators from numpy.random should be used instead.
The ndarray.view method will only allow c_contiguous arrays to be viewed \
using a dtype of different size causing the last dimension to change. That \
differs from the current behavior where arrays that are f_contiguous but not \
c_contiguous can be viewed as a dtype type of different size causing the first \
dimension to change.
Slicing a MaskedArray will return views of both data and mask. Currently the \
mask is copy-on-write and changes to the mask in the slice do not propagate to \
the original mask. See the FutureWarnings section below for details.
Compatibility notes
datetime64 changes
In prior versions of NumPy the experimental datetime64 type always stored times \
in UTC. By default, creating a datetime64 object from a string or printing it \
would convert from or to local time:
# old behavior
>>>> np.datetime64('2000-01-01T00:00:00')
numpy.datetime64('2000-01-01T00:00:00-0800') # note the timezone offset -08:00
A consensus of datetime64 users agreed that this behavior is undesirable and at \
odds with how datetime64 is usually used (e.g., by pandas). For most use cases, \
a timezone naive datetime type is preferred, similar to the datetime.datetime \
type in the Python standard library. Accordingly, datetime64 no longer assumes \
that input is in local time, nor does it print local times:
>>>> np.datetime64('2000-01-01T00:00:00')
numpy.datetime64('2000-01-01T00:00:00')
For backwards compatibility, datetime64 still parses timezone offsets, which it \
handles by converting to UTC. However, the resulting datetime is timezone naive:
>>> np.datetime64('2000-01-01T00:00:00-08')
DeprecationWarning: parsing timezone aware datetimes is deprecated;
this will raise an error in the future
numpy.datetime64('2000-01-01T08:00:00')
As a corollary to this change, we no longer prohibit casting between datetimes \
with date units and datetimes with time units. With timezone naive datetimes, \
the rule for casting from dates to times is no longer ambiguous.
linalg.norm return type changes
The return type of the linalg.norm function is now floating point without \
exception. Some of the norm types previously returned integers.
polynomial fit changes
The various fit functions in the numpy polynomial package no longer accept \
non-integers for degree specification.
np.dot now raises TypeError instead of ValueError
This behaviour mimics that of other functions such as np.inner. If the two \
arguments cannot be cast to a common type, it could have raised a TypeError or \
ValueError depending on their order. Now, np.dot will now always raise a \
TypeError.
FutureWarning to changed behavior
In np.lib.split an empty array in the result always had dimension (0,) no \
matter the dimensions of the array being split. This has been changed so that \
the dimensions will be preserved. A FutureWarning for this change has been in \
place since Numpy 1.9 but, due to a bug, sometimes no warning was raised and the \
dimensions were already preserved.
% and // operators
These operators are implemented with the remainder and floor_divide functions \
respectively. Those functions are now based around fmod and are computed \
together so as to be compatible with each other and with the Python versions for \
float types. The results should be marginally more accurate or outright bug \
fixes compared to the previous results, but they may differ significantly in \
cases where roundoff makes a difference in the integer returned by floor_divide. \
Some corner cases also change, for instance, NaN is always returned for both \
functions when the divisor is zero, divmod(1.0, inf) returns (0.0, 1.0) except \
on MSVC 2008, and divmod(-1.0, inf) returns (-1.0, inf).
C API
Removed the check_return and inner_loop_selector members of the PyUFuncObject \
struct (replacing them with reserved slots to preserve struct layout). These \
were never used for anything, so it's unlikely that any third-party code is \
using them either, but we mention it here for completeness.
object dtype detection for old-style classes
In python 2, objects which are instances of old-style user-defined classes no \
longer automatically count as 'object' type in the dtype-detection handler. \
Instead, as in python 3, they may potentially count as sequences, but only if \
they define both a __len__ and a __getitem__ method. This fixes a segfault and \
inconsistency between python 2 and 3.
New Features
np.histogram now provides plugin estimators for automatically estimating the \
optimal number of bins. Passing one of ['auto', 'fd', 'scott', 'rice', \
'sturges'] as the argument to 'bins' results in the corresponding estimator \
being used.
A benchmark suite using Airspeed Velocity has been added, converting the \
previous vbench-based one. You can run the suite locally via python runtests.py \
--bench. For more details, see benchmarks/README.rst.
A new function np.shares_memory that can check exactly whether two arrays \
have memory overlap is added. np.may_share_memory also now has an option to \
spend more effort to reduce false positives.
SkipTest and KnownFailureException exception classes are exposed in the \
numpy.testing namespace. Raise them in a test function to mark the test to be \
skipped or mark it as a known failure, respectively.
f2py.compile has a new extension keyword parameter that allows the fortran \
extension to be specified for generated temp files. For instance, the files can \
be specifies to be *.f90. The verbose argument is also activated, it was \
previously ignored.
A dtype parameter has been added to np.random.randint Random ndarrays of the \
following types can now be generated:
np.bool,
np.int8, np.uint8,
np.int16, np.uint16,
np.int32, np.uint32,
np.int64, np.uint64,
np.int_ ``, ``np.intp
The specification is by precision rather than by C type. Hence, on some \
platforms np.int64 may be a long instead of long long even if the specified \
dtype is long long because the two may have the same precision. The resulting \
type depends on which C type numpy uses for the given precision. The byteorder \
specification is also ignored, the generated arrays are always in native byte \
order.
A new np.moveaxis function allows for moving one or more array axes to a new \
position by explicitly providing source and destination axes. This function \
should be easier to use than the current rollaxis function as well as providing \
more functionality.
The deg parameter of the various numpy.polynomial fits has been extended to \
accept a list of the degrees of the terms to be included in the fit, the \
coefficients of all other terms being constrained to zero. The change is \
backward compatible, passing a scalar deg will behave as before.
A divmod function for float types modeled after the Python version has been \
added to the npy_math library.
Improvements
np.gradient now supports an axis argument
The axis parameter was added to np.gradient for consistency. It allows to \
specify over which axes the gradient is calculated.
np.lexsort now supports arrays with object data-type
The function now internally calls the generic npy_amergesort when the type does \
not implement a merge-sort kind of argsort method.
np.ma.core.MaskedArray now supports an order argument
When constructing a new MaskedArray instance, it can be configured with an order \
argument analogous to the one when calling np.ndarray. The addition of this \
argument allows for the proper processing of an order argument in several \
MaskedArray-related utility functions such as np.ma.core.array and \
np.ma.core.asarray.
Memory and speed improvements for masked arrays
Creating a masked array with mask=True (resp. mask=False) now uses np.ones \
(resp. np.zeros) to create the mask, which is faster and avoid a big memory \
peak. Another optimization was done to avoid a memory peak and useless \
computations when printing a masked array.
ndarray.tofile now uses fallocate on linux
The function now uses the fallocate system call to reserve sufficient disk space \
on file systems that support it.
Optimizations for operations of the form A.T @ A and A @ A.T
Previously, gemm BLAS operations were used for all matrix products. Now, if the \
matrix product is between a matrix and its transpose, it will use syrk BLAS \
operations for a performance boost. This optimization has been extended to @, \
numpy.dot, numpy.inner, and numpy.matmul.
Note: Requires the transposed and non-transposed matrices to share data.
np.testing.assert_warns can now be used as a context manager
This matches the behavior of assert_raises.
Speed improvement for np.random.shuffle
np.random.shuffle is now much faster for 1d ndarrays.
Changes
Pyrex support was removed from numpy.distutils
The method build_src.generate_a_pyrex_source will remain available; it has been \
monkeypatched by users to support Cython instead of Pyrex. It's recommended to \
switch to a better supported method of build Cython extensions though.
np.broadcast can now be called with a single argument
The resulting object in that case will simply mimic iteration over a single \
array. This change obsoletes distinctions like
if len(x) == 1:
shape = x[0].shape
else:
shape = np.broadcast(*x).shape
Instead, np.broadcast can be used in all cases.
np.trace now respects array subclasses
This behaviour mimics that of other functions such as np.diagonal and ensures, \
e.g., that for masked arrays np.trace(ma) and ma.trace() give the same result.
np.dot now raises TypeError instead of ValueError
This behaviour mimics that of other functions such as np.inner. If the two \
arguments cannot be cast to a common type, it could have raised a TypeError or \
ValueError depending on their order. Now, np.dot will now always raise a \
TypeError.
linalg.norm return type changes
The linalg.norm function now does all its computations in floating point and \
returns floating results. This change fixes bugs due to integer overflow and the \
failure of abs with signed integers of minimum value, e.g., int8(-128). For \
consistancy, floats are used even where an integer might work.
Deprecations
Views of arrays in Fortran order
The F_CONTIGUOUS flag was used to signal that views using a dtype that changed \
the element size would change the first index. This was always problematical for \
arrays that were both F_CONTIGUOUS and C_CONTIGUOUS because C_CONTIGUOUS took \
precedence. Relaxed stride checking results in more such dual contiguous arrays \
and breaks some existing code as a result. Note that this also affects changing \
the dtype by assigning to the dtype attribute of an array. The aim of this \
deprecation is to restrict views to C_CONTIGUOUS arrays at some future time. A \
work around that is backward compatible is to use a.T.view(...).T instead. A \
parameter may also be added to the view method to explicitly ask for Fortran \
order views, but that will not be backward compatible.
Invalid arguments for array ordering
It is currently possible to pass in arguments for the order parameter in methods \
like array.flatten or array.ravel that were not one of the following: 'C', 'F', \
'A', 'K' (note that all of these possible values are both unicode and case \
insensitive). Such behavior will not be allowed in future releases.
Random number generator in the testing namespace
The Python standard library random number generator was previously exposed in \
the testing namespace as testing.rand. Using this generator is not recommended \
and it will be removed in a future release. Use generators from numpy.random \
namespace instead.
Random integer generation on a closed interval
In accordance with the Python C API, which gives preference to the half-open \
interval over the closed one, np.random.random_integers is being deprecated in \
favor of calling np.random.randint, which has been enhanced with the dtype \
parameter as described under "New Features". However, \
np.random.random_integers will not be removed anytime soon.
FutureWarnings
Assigning to slices/views of MaskedArray
Currently a slice of a masked array contains a view of the original data and a \
copy-on-write view of the mask. Consequently, any changes to the slice's mask \
will result in a copy of the original mask being made and that new mask being \
changed rather than the original. For example, if we make a slice of the \
original like so, view = original[:], then modifications to the data in one \
array will affect the data of the other but, because the mask will be copied \
during assignment operations, changes to the mask will remain local. A similar \
situation occurs when explicitly constructing a masked array using \
MaskedArray(data, mask), the returned array will contain a view of data but the \
mask will be a copy-on-write view of mask.
In the future, these cases will be normalized so that the data and mask arrays \
are treated the same way and modifications to either will propagate between \
views. In 1.11, numpy will issue a MaskedArrayFutureWarning warning whenever \
user code modifies the mask of a view that in the future may cause values to \
propagate back to the original. To silence these warnings and make your code \
robust against the upcoming changes, you have two options: if you want to keep \
the current behavior, call masked_view.unshare_mask() before modifying the mask. \
If you want to get the future behavior early, use masked_view._sharedmask = \
False. However, note that setting the _sharedmask attribute will break following \
explicit calls to masked_view.unshare_mask().
NumPy 1.10.4 Release Notes
This release is a bugfix source release motivated by a segfault regression. No \
windows binaries are provided for this release, as there appear to be bugs in \
the toolchain we use to generate those files. Hopefully that problem will be \
fixed for the next release. In the meantime, we suggest using one of the \
providers of windows binaries.
Compatibility notes
The trace function now calls the trace method on subclasses of ndarray, \
except for matrix, for which the current behavior is preserved. This is to help \
with the units package of AstroPy and hopefully will not cause problems.
Issues Fixed
gh-6922 BUG: numpy.recarray.sort segfaults on Windows.
gh-6937 BUG: busday_offset does the wrong thing with modifiedpreceding roll.
gh-6949 BUG: Type is lost when slicing a subclass of recarray.
Merged PRs
The following PRs have been merged into 1.10.4. When the PR is a backport, the \
PR number for the original PR against master is listed.
gh-6840 TST: Update travis testing script in 1.10.x
gh-6843 BUG: Fix use of python 3 only FileNotFoundError in test_f2py.
gh-6884 REL: Update pavement.py and setup.py to reflect current version.
gh-6916 BUG: Fix test_f2py so it runs correctly in runtests.py.
gh-6924 BUG: Fix segfault gh-6922.
gh-6942 Fix datetime roll='modifiedpreceding' bug.
gh-6943 DOC,BUG: Fix some latex generation problems.
gh-6950 BUG trace is not subclass aware, np.trace(ma) != ma.trace().
gh-6952 BUG recarray slices should preserve subclass.
NumPy 1.10.3 Release Notes
N/A this release did not happen due to various screwups involving PyPi.
NumPy 1.10.2 Release Notes
This release deals with a number of bugs that turned up in 1.10.1 and adds \
various build and release improvements.
Numpy 1.10.1 supports Python 2.6 - 2.7 and 3.2 - 3.5.
Compatibility notes
Relaxed stride checking is no longer the default
There were back compatibility problems involving views changing the dtype of \
multidimensional Fortran arrays that need to be dealt with over a longer \
timeframe.
Fix swig bug in numpy.i
Relaxed stride checking revealed a bug in array_is_fortran(a), that was using \
PyArray_ISFORTRAN to check for Fortran contiguity instead of \
PyArray_IS_F_CONTIGUOUS. You may want to regenerate swigged files using the \
updated numpy.i
Deprecate views changing dimensions in fortran order
This deprecates assignment of a new descriptor to the dtype attribute of a \
non-C-contiguous array if it result in changing the shape. This effectively bars \
viewing a multidimensional Fortran array using a dtype that changes the element \
size along the first axis.
The reason for the deprecation is that, when relaxed strides checking is \
enabled, arrays that are both C and Fortran contiguous are always treated as C \
contiguous which breaks some code that depended the two being mutually exclusive \
for non-scalar arrays of ndim > 1. This deprecation prepares the way to \
always enable relaxed stride checking.
Issues Fixed
gh-6019 Masked array repr fails for structured array with multi-dimensional \
column.
gh-6462 Median of empty array produces IndexError.
gh-6467 Performance regression for record array access.
gh-6468 numpy.interp uses 'left' value even when x[0]==xp[0].
gh-6475 np.allclose returns a memmap when one of its arguments is a memmap.
gh-6491 Error in broadcasting stride_tricks array.
gh-6495 Unrecognized command line option '-ffpe-summary' in gfortran.
gh-6497 Failure of reduce operation on recarrays.
gh-6498 Mention change in default casting rule in 1.10 release notes.
gh-6530 The partition function errors out on empty input.
gh-6532 numpy.inner return wrong inaccurate value sometimes.
gh-6563 Intent(out) broken in recent versions of f2py.
gh-6569 Cannot run tests after 'python setup.py build_ext -i'
gh-6572 Error in broadcasting stride_tricks array component.
gh-6575 BUG: Split produces empty arrays with wrong number of dimensions
gh-6590 Fortran Array problem in numpy 1.10.
gh-6602 Random __all__ missing choice and dirichlet.
gh-6611 ma.dot no longer always returns a masked array in 1.10.
gh-6618 NPY_FORTRANORDER in make_fortran() in numpy.i
gh-6636 Memory leak in nested dtypes in numpy.recarray
gh-6641 Subsetting recarray by fields yields a structured array.
gh-6667 ma.make_mask handles ma.nomask input incorrectly.
gh-6675 Optimized blas detection broken in master and 1.10.
gh-6678 Getting unexpected error from: X.dtype = complex (or Y = X.view(complex))
gh-6718 f2py test fail in pip installed numpy-1.10.1 in virtualenv.
gh-6719 Error compiling Cython file: Pythonic division not allowed without gil.
gh-6771 Numpy.rec.fromarrays losing dtype metadata between versions 1.9.2 \
and 1.10.1
gh-6781 The travis-ci script in maintenance/1.10.x needs fixing.
gh-6807 Windows testing errors for 1.10.2
Merged PRs
The following PRs have been merged into 1.10.2. When the PR is a backport, the \
PR number for the original PR against master is listed.
gh-5773 MAINT: Hide testing helper tracebacks when using them with pytest.
gh-6094 BUG: Fixed a bug with string representation of masked structured arrays.
gh-6208 MAINT: Speedup field access by removing unneeded safety checks.
gh-6460 BUG: Replacing the os.environ.clear by less invasive procedure.
gh-6470 BUG: Fix AttributeError in numpy distutils.
gh-6472 MAINT: Use Python 3.5 instead of 3.5-dev for travis 3.5 testing.
gh-6474 REL: Update Paver script for sdist and auto-switch test warnings.
gh-6478 BUG: Fix Intel compiler flags for OS X build.
gh-6481 MAINT: LIBPATH with spaces is now supported Python 2.7+ and Win32.
gh-6487 BUG: Allow nested use of parameters in definition of arrays in f2py.
gh-6488 BUG: Extend common blocks rather than overwriting in f2py.
gh-6499 DOC: Mention that default casting for inplace operations has changed.
gh-6500 BUG: Recarrays viewed as subarrays don't convert to np.record type.
gh-6501 REL: Add "make upload" command for built docs, update \
"make dist".
gh-6526 BUG: Fix use of __doc__ in setup.py for -OO mode.
gh-6527 BUG: Fix the IndexError when taking the median of an empty array.
gh-6537 BUG: Make ma.atleast_* with scalar argument return arrays.
gh-6538 BUG: Fix ma.masked_values does not shrink mask if requested.
gh-6546 BUG: Fix inner product regression for non-contiguous arrays.
gh-6553 BUG: Fix partition and argpartition error for empty input.
gh-6556 BUG: Error in broadcast_arrays with as_strided array.
gh-6558 MAINT: Minor update to "make upload" doc build command.
gh-6562 BUG: Disable view safety checks in recarray.
gh-6567 BUG: Revert some import * fixes in f2py.
gh-6574 DOC: Release notes for Numpy 1.10.2.
gh-6577 BUG: Fix for #6569, allowing build_ext --inplace
gh-6579 MAINT: Fix mistake in doc upload rule.
gh-6596 BUG: Fix swig for relaxed stride checking.
gh-6606 DOC: Update 1.10.2 release notes.
gh-6614 BUG: Add choice and dirichlet to numpy.random.__all__.
gh-6621 BUG: Fix swig make_fortran function.
gh-6628 BUG: Make allclose return python bool.
gh-6642 BUG: Fix memleak in _convert_from_dict.
gh-6643 ENH: make recarray.getitem return a recarray.
gh-6653 BUG: Fix ma dot to always return masked array.
gh-6668 BUG: ma.make_mask should always return nomask for nomask argument.
gh-6686 BUG: Fix a bug in assert_string_equal.
gh-6695 BUG: Fix removing tempdirs created during build.
gh-6697 MAINT: Fix spurious semicolon in macro definition of PyArray_FROM_OT.
gh-6698 TST: test np.rint bug for large integers.
gh-6717 BUG: Readd fallback CBLAS detection on linux.
gh-6721 BUG: Fix for #6719.
gh-6726 BUG: Fix bugs exposed by relaxed stride rollback.
gh-6757 BUG: link cblas library if cblas is detected.
gh-6756 TST: only test f2py, not f2py2.7 etc, fixes #6718.
gh-6747 DEP: Deprecate changing shape of non-C-contiguous array via descr.
gh-6775 MAINT: Include from __future__ boilerplate in some files missing it.
gh-6780 BUG: metadata is not copied to base_dtype.
gh-6783 BUG: Fix travis ci testing for new google infrastructure.
gh-6785 BUG: Quick and dirty fix for interp.
gh-6813 TST,BUG: Make test_mvoid_multidim_print work for 32 bit systems.
gh-6817 BUG: Disable 32-bit msvc9 compiler optimizations for npy_rint.
gh-6819 TST: Fix test_mvoid_multidim_print failures on Python 2.x for Windows.
Initial support for mingwpy was reverted as it was causing problems for \
non-windows builds.
gh-6536 BUG: Revert gh-5614 to fix non-windows build problems
A fix for np.lib.split was reverted because it resulted in "fixing" \
behavior that will be present in the Numpy 1.11 and that was already present in \
Numpy 1.9. See the discussion of the issue at gh-6575 for clarification.
gh-6576 BUG: Revert gh-6376 to fix split behavior for empty arrays.
Relaxed stride checking was reverted. There were back compatibility problems \
involving views changing the dtype of multidimensional Fortran arrays that need \
to be dealt with over a longer timeframe.
gh-6735 MAINT: Make no relaxed stride checking the default for 1.10.
Notes
A bug in the Numpy 1.10.1 release resulted in exceptions being raised for \
RuntimeWarning and DeprecationWarning in projects depending on Numpy. That has \
been fixed.
NumPy 1.10.1 Release Notes
This release deals with a few build problems that showed up in 1.10.0. Most \
users would not have seen these problems. The differences are:
Compiling with msvc9 or msvc10 for 32 bit Windows now requires SSE2. This \
was the easiest fix for what looked to be some miscompiled code when SSE2 was \
not used. If you need to compile for 32 bit Windows systems without SSE2 \
support, mingw32 should still work.
Make compiling with VS2008 python2.7 SDK easier
Change Intel compiler options so that code will also be generated to support \
systems without SSE4.2.
Some _config test functions needed an explicit integer return in order to \
avoid the openSUSE rpmlinter erring out.
We ran into a problem with pipy not allowing reuse of filenames and a \
resulting proliferation of ..*.postN releases. Not only were the names getting \
out of hand, some packages were unable to work with the postN suffix.
Numpy 1.10.1 supports Python 2.6 - 2.7 and 3.2 - 3.5.
Commits:
45a3d84 DEP: Remove warning for full when dtype is set. 0c1a5df BLD: import \
setuptools to allow compile with VS2008 python2.7 sdk 04211c6 BUG: mask nan to 1 \
in ordered compare 826716f DOC: Document the reason msvc requires SSE2 on 32 bit \
platforms. 49fa187 BLD: enable SSE2 for 32-bit msvc 9 and 10 compilers dcbc4cc \
MAINT: remove Wreturn-type warnings from config checks d6564cb BLD: do not build \
exclusively for SSE4.2 processors 15cb66f BLD: do not build exclusively for \
SSE4.2 processors c38bc08 DOC: fix var. reference in percentile docstring \
78497f4 DOC: Sync 1.10.0-notes.rst in 1.10.x branch with master.
NumPy 1.10.0 Release Notes
This release supports Python 2.6 - 2.7 and 3.2 - 3.5.
Highlights
numpy.distutils now supports parallel compilation via the --parallel/-j \
argument passed to setup.py build
numpy.distutils now supports additional customization via site.cfg to \
control compilation parameters, i.e. runtime libraries, extra \
linking/compilation flags.
Addition of np.linalg.multi_dot: compute the dot product of two or more \
arrays in a single function call, while automatically selecting the fastest \
evaluation order.
The new function np.stack provides a general interface for joining a \
sequence of arrays along a new axis, complementing np.concatenate for joining \
along an existing axis.
Addition of nanprod to the set of nanfunctions.
Support for the '@' operator in Python 3.5.
Dropped Support
The _dotblas module has been removed. CBLAS Support is now in Multiarray.
The testcalcs.py file has been removed.
The polytemplate.py file has been removed.
npy_PyFile_Dup and npy_PyFile_DupClose have been removed from npy_3kcompat.h.
splitcmdline has been removed from numpy/distutils/exec_command.py.
try_run and get_output have been removed from numpy/distutils/command/config.py
The a._format attribute is no longer supported for array printing.
Keywords skiprows and missing removed from np.genfromtxt.
Keyword old_behavior removed from np.correlate.
Future Changes
In array comparisons like arr1 == arr2, many corner cases involving strings \
or structured dtypes that used to return scalars now issue FutureWarning or \
DeprecationWarning, and in the future will be change to either perform \
elementwise comparisons or raise an error.
In np.lib.split an empty array in the result always had dimension (0,) no \
matter the dimensions of the array being split. In Numpy 1.11 that behavior will \
be changed so that the dimensions will be preserved. A FutureWarning for this \
change has been in place since Numpy 1.9 but, due to a bug, sometimes no warning \
was raised and the dimensions were already preserved.
The SafeEval class will be removed in Numpy 1.11.
The alterdot and restoredot functions will be removed in Numpy 1.11.
See below for more details on these changes.
Compatibility notes
Default casting rule change
Default casting for inplace operations has changed to 'same_kind'. For instance, \
if n is an array of integers, and f is an array of floats, then n += f will \
result in a TypeError, whereas in previous Numpy versions the floats would be \
silently cast to ints. In the unlikely case that the example code is not an \
actual bug, it can be updated in a backward compatible way by rewriting it as \
np.add(n, f, out=n, casting='unsafe'). The old 'unsafe' default has been \
deprecated since Numpy 1.7.
numpy version string
The numpy version string for development builds has been changed from \
x.y.z.dev-githash to x.y.z.dev0+githash (note the +) in order to comply with PEP \
440.
relaxed stride checking
NPY_RELAXED_STRIDE_CHECKING is now true by default.
UPDATE: In 1.10.2 the default value of NPY_RELAXED_STRIDE_CHECKING was changed \
to false for back compatibility reasons. More time is needed before it can be \
made the default. As part of the roadmap a deprecation of dimension changing \
views of f_contiguous not c_contiguous arrays was also added.
Concatenation of 1d arrays along any but axis=0 raises IndexError
Using axis != 0 has raised a DeprecationWarning since NumPy 1.7, it now raises \
an error.
np.ravel, np.diagonal and np.diag now preserve subtypes
There was inconsistent behavior between x.ravel() and np.ravel(x), as well as \
between x.diagonal() and np.diagonal(x), with the methods preserving subtypes \
while the functions did not. This has been fixed and the functions now behave \
like the methods, preserving subtypes except in the case of matrices. Matrices \
are special cased for backward compatibility and still return 1-D arrays as \
before. If you need to preserve the matrix subtype, use the methods instead of \
the functions.
rollaxis and swapaxes always return a view
Previously, a view was returned except when no change was made in the order of \
the axes, in which case the input array was returned. A view is now returned in \
all cases.
nonzero now returns base ndarrays
Previously, an inconsistency existed between 1-D inputs (returning a base \
ndarray) and higher dimensional ones (which preserved subclasses). Behavior has \
been unified, and the return will now be a base ndarray. Subclasses can still \
override this behavior by providing their own nonzero method.
C API
The changes to swapaxes also apply to the PyArray_SwapAxes C function, which now \
returns a view in all cases.
The changes to nonzero also apply to the PyArray_Nonzero C function, which now \
returns a base ndarray in all cases.
The dtype structure (PyArray_Descr) has a new member at the end to cache its \
hash value. This shouldn't affect any well-written applications.
The change to the concatenation function DeprecationWarning also affects \
PyArray_ConcatenateArrays,
recarray field return types
Previously the returned types for recarray fields accessed by attribute and by \
index were inconsistent, and fields of string type were returned as chararrays. \
Now, fields accessed by either attribute or indexing will return an ndarray for \
fields of non-structured type, and a recarray for fields of structured type. \
Notably, this affect recarrays containing strings with whitespace, as trailing \
whitespace is trimmed from chararrays but kept in ndarrays of string type. Also, \
the dtype.type of nested structured fields is now inherited.
recarray views
Viewing an ndarray as a recarray now automatically converts the dtype to \
np.record. See new record array documentation. Additionally, viewing a recarray \
with a non-structured dtype no longer converts the result's type to ndarray - \
the result will remain a recarray.
'out' keyword argument of ufuncs now accepts tuples of arrays
When using the 'out' keyword argument of a ufunc, a tuple of arrays, one per \
ufunc output, can be provided. For ufuncs with a single output a single array is \
also a valid 'out' keyword argument. Previously a single array could be provided \
in the 'out' keyword argument, and it would be used as the first output for \
ufuncs with multiple outputs, is deprecated, and will result in a \
DeprecationWarning now and an error in the future.
byte-array indices now raises an IndexError
Indexing an ndarray using a byte-string in Python 3 now raises an IndexError \
instead of a ValueError.
Masked arrays containing objects with arrays
For such (rare) masked arrays, getting a single masked item no longer returns a \
corrupted masked array, but a fully masked version of the item.
Median warns and returns nan when invalid values are encountered
Similar to mean, median and percentile now emits a Runtime warning and returns \
NaN in slices where a NaN is present. To compute the median or percentile while \
ignoring invalid values use the new nanmedian or nanpercentile functions.
Functions available from numpy.ma.testutils have changed
All functions from numpy.testing were once available from numpy.ma.testutils but \
not all of them were redefined to work with masked arrays. Most of those \
functions have now been removed from numpy.ma.testutils with a small subset \
retained in order to preserve backward compatibility. In the long run this \
should help avoid mistaken use of the wrong functions, but it may cause import \
problems for some.
New Features
Reading extra flags from site.cfg
Previously customization of compilation of dependency libraries and numpy itself \
was only accomblishable via code changes in the distutils package. Now \
numpy.distutils reads in the following extra flags from each group of the \
site.cfg:
runtime_library_dirs/rpath, sets runtime library directories to override
LD_LIBRARY_PATH
extra_compile_args, add extra flags to the compilation of sources
extra_link_args, add extra flags when linking libraries
This should, at least partially, complete user customization.
np.cbrt to compute cube root for real floats
np.cbrt wraps the C99 cube root function cbrt. Compared to np.power(x, 1./3.) it \
is well defined for negative real floats and a bit faster.
numpy.distutils now allows parallel compilation
By passing --parallel=n or -j n to setup.py build the compilation of extensions \
is now performed in n parallel processes. The parallelization is limited to \
files within one extension so projects using Cython will not profit because it \
builds extensions from single files.
genfromtxt has a new max_rows argument
A max_rows argument has been added to genfromtxt to limit the number of rows \
read in a single call. Using this functionality, it is possible to read in \
multiple arrays stored in a single file by making repeated calls to the \
function.
New function np.broadcast_to for invoking array broadcasting
np.broadcast_to manually broadcasts an array to a given shape according to \
numpy's broadcasting rules. The functionality is similar to broadcast_arrays, \
which in fact has been rewritten to use broadcast_to internally, but only a \
single array is necessary.
New context manager clear_and_catch_warnings for testing warnings
When Python emits a warning, it records that this warning has been emitted in \
the module that caused the warning, in a module attribute __warningregistry__. \
Once this has happened, it is not possible to emit the warning again, unless you \
clear the relevant entry in __warningregistry__. This makes is hard and fragile \
to test warnings, because if your test comes after another that has already \
caused the warning, you will not be able to emit the warning or test it. The \
context manager clear_and_catch_warnings clears warnings from the module \
registry on entry and resets them on exit, meaning that warnings can be \
re-raised.
cov has new fweights and aweights arguments
The fweights and aweights arguments add new functionality to covariance \
calculations by applying two types of weighting to observation vectors. An array \
of fweights indicates the number of repeats of each observation vector, and an \
array of aweights provides their relative importance or probability.
Support for the '@' operator in Python 3.5+
Python 3.5 adds support for a matrix multiplication operator '@' proposed in \
PEP465. Preliminary support for that has been implemented, and an equivalent \
function matmul has also been added for testing purposes and use in earlier \
Python versions. The function is preliminary and the order and number of its \
optional arguments can be expected to change.
New argument norm to fft functions
The default normalization has the direct transforms unscaled and the inverse \
transforms are scaled by 1/n . It is possible to obtain unitary transforms by \
setting the keyword argument norm to "ortho" (default is None) so that \
both direct and inverse transforms will be scaled by 1/\\sqrt{n} .
Improvements
np.digitize using binary search
np.digitize is now implemented in terms of np.searchsorted. This means that a \
binary search is used to bin the values, which scales much better for larger \
number of bins than the previous linear search. It also removes the requirement \
for the input array to be 1-dimensional.
np.poly now casts integer inputs to float
np.poly will now cast 1-dimensional input arrays of integer type to double \
precision floating point, to prevent integer overflow when computing the monic \
polynomial. It is still possible to obtain higher precision results by passing \
in an array of object type, filled e.g. with Python ints.
np.interp can now be used with periodic functions
np.interp now has a new parameter period that supplies the period of the input \
data xp. In such case, the input data is properly normalized to the given period \
and one end point is added to each extremity of xp in order to close the \
previous and the next period cycles, resulting in the correct interpolation \
behavior.
np.pad supports more input types for pad_width and constant_values
constant_values parameters now accepts NumPy arrays and float values. NumPy \
arrays are supported as input for pad_width, and an exception is raised if its \
values are not of integral type.
np.argmax and np.argmin now support an out argument
The out parameter was added to np.argmax and np.argmin for consistency with \
ndarray.argmax and ndarray.argmin. The new parameter behaves exactly as it does \
in those methods.
More system C99 complex functions detected and used
All of the functions in complex.h are now detected. There are new fallback \
implementations of the following functions.
npy_ctan,
npy_cacos, npy_casin, npy_catan
npy_ccosh, npy_csinh, npy_ctanh,
npy_cacosh, npy_casinh, npy_catanh
As a result of these improvements, there will be some small changes in returned \
values, especially for corner cases.
np.loadtxt support for the strings produced by the float.hex method
The strings produced by float.hex look like 0x1.921fb54442d18p+1, so this is not \
the hex used to represent unsigned integer types.
np.isclose properly handles minimal values of integer dtypes
In order to properly handle minimal values of integer types, np.isclose will now \
cast to the float dtype during comparisons. This aligns its behavior with what \
was provided by np.allclose.
np.allclose uses np.isclose internally.
np.allclose now uses np.isclose internally and inherits the ability to compare \
NaNs as equal by setting equal_nan=True. Subclasses, such as np.ma.MaskedArray, \
are also preserved now.
np.genfromtxt now handles large integers correctly
np.genfromtxt now correctly handles integers larger than 2**31-1 on 32-bit \
systems and larger than 2**63-1 on 64-bit systems (it previously crashed with an \
OverflowError in these cases). Integers larger than 2**63-1 are converted to \
floating-point values.
np.load, np.save have pickle backward compatibility flags
The functions np.load and np.save have additional keyword arguments for \
controlling backward compatibility of pickled Python objects. This enables Numpy \
on Python 3 to load npy files containing object arrays that were generated on \
Python 2.
MaskedArray support for more complicated base classes
Built-in assumptions that the baseclass behaved like a plain array are being \
removed. In particular, setting and getting elements and ranges will respect \
baseclass overrides of __setitem__ and __getitem__, and arithmetic will respect \
overrides of __add__, __sub__, etc.
Changes
dotblas functionality moved to multiarray
The cblas versions of dot, inner, and vdot have been integrated into the \
multiarray module. In particular, vdot is now a multiarray function, which it \
was not before.
stricter check of gufunc signature compliance
Inputs to generalized universal functions are now more strictly checked against \
the function's signature: all core dimensions are now required to be present in \
input arrays; core dimensions with the same label must have the exact same size; \
and output core dimension's must be specified, either by a same label input core \
dimension or by a passed-in output array.
views returned from np.einsum are writeable
Views returned by np.einsum will now be writeable whenever the input array is \
writeable.
np.argmin skips NaT values
np.argmin now skips NaT values in datetime64 and timedelta64 arrays, making it \
consistent with np.min, np.argmax and np.max.
Deprecations
Array comparisons involving strings or structured dtypes
Normally, comparison operations on arrays perform elementwise comparisons and \
return arrays of booleans. But in some corner cases, especially involving \
strings are structured dtypes, NumPy has historically returned a scalar instead. \
For example:
### Current behaviour
np.arange(2) == "foo"
# -> False
np.arange(2) < "foo"
# -> True on Python 2, error on Python 3
np.ones(2, dtype="i4,i4") == np.ones(2, dtype="i4,i4,i4")
# -> False
Continuing work started in 1.9, in 1.10 these comparisons will now raise \
FutureWarning or DeprecationWarning, and in the future they will be modified to \
behave more consistently with other comparison operations, e.g.:
### Future behaviour
np.arange(2) == "foo"
# -> array([False, False])
np.arange(2) < "foo"
# -> error, strings and numbers are not orderable
np.ones(2, dtype="i4,i4") == np.ones(2, dtype="i4,i4,i4")
# -> [False, False]
SafeEval
The SafeEval class in numpy/lib/utils.py is deprecated and will be removed in \
the next release.
alterdot, restoredot
The alterdot and restoredot functions no longer do anything, and are deprecated.
pkgload, PackageLoader
These ways of loading packages are now deprecated.
bias, ddof arguments to corrcoef
The values for the bias and ddof arguments to the corrcoef function canceled in \
the division implied by the correlation coefficient and so had no effect on the \
returned values.
We now deprecate these arguments to corrcoef and the masked array version \
ma.corrcoef.
Because we are deprecating the bias argument to ma.corrcoef, we also deprecate \
the use of the allow_masked argument as a positional argument, as its position \
will change with the removal of bias. allow_masked will in due course become a \
keyword-only argument.
dtype string representation changes
Since 1.6, creating a dtype object from its string representation, e.g. 'f4', \
would issue a deprecation warning if the size did not correspond to an existing \
type, and default to creating a dtype of the default size for the type. Starting \
with this release, this will now raise a TypeError.
The only exception is object dtypes, where both 'O4' and 'O8' will still issue a \
deprecation warning. This platform-dependent representation will raise an error \
in the next release.
In preparation for this upcoming change, the string representation of an object \
dtype, i.e. np.dtype(object).str, no longer includes the item size, i.e. will \
return '|O' instead of '|O4' or '|O8' as before.
Files: