NumPy 1.11.0 Release Notes ************************** This release supports Python 2.6 - 2.7 and 3.2 - 3.5. Highlights ========== Dropped Support =============== * Bento build support and related files have been removed. * Single file build support and related files have been removed. Future Changes ============== * Relaxed stride checking will become the default in 1.12.0. * Support for Python 2.6, 3.2, and 3.3 will be dropped in 1.12.0. Compatibility notes =================== DeprecationWarning to error ~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Indexing with floats raises IndexError, e.g., a[0, 0.0]. * Indexing with non-integer array_like raises IndexError, e.g., a['1', '2'] * Indexing with multiple ellipsis raises IndexError, e.g., a[..., ...]. * Indexing with boolean where integer expected raises IndexError, e.g., a[False:True:True]. * Non-integers used as index values raise TypeError, e.g., in reshape, take, and specifying reduce axis. 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. 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. 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_ (long), 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. 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. 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 diskspace on filesystems that support it. Changes ======= *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. Deprecations ============ Views of arrays in Fortran order ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The f_contiguous flag was used to signal that views as a dtypes that changed the element size would change the first index. This was always a bit 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 will 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 unicode- and case-insensitive). Such behaviour will not be allowed in future releases.