[Numpy-discussion] ANN: NumPy 1.7.0 release

Francesc Alted francesc at continuum.io
Sun Feb 10 03:13:33 EST 2013


Exciting stuff. Thanks a lot to you and everybody implied in the release
for an amazing job.

Francesc
El 10/02/2013 2:25, "Ondřej Čertík" <ondrej.certik at gmail.com> va escriure:

> Hi,
>
> I'm pleased to announce the availability of the final release of
> NumPy 1.7.0.
>
> Sources and binary installers can be found at
> https://sourceforge.net/projects/numpy/files/NumPy/1.7.0/
>
> This release is equivalent to the 1.7.0rc2 release, since no more problems
> were found. For release notes see below.
>
> I would like to thank everybody who contributed to this release.
>
> Cheers,
> Ondrej
>
>
> =========================
> NumPy 1.7.0 Release Notes
> =========================
>
> This release includes several new features as well as numerous bug fixes
> and
> refactorings. It supports Python 2.4 - 2.7 and 3.1 - 3.3 and is the last
> release that supports Python 2.4 - 2.5.
>
> Highlights
> ==========
>
> * ``where=`` parameter to ufuncs (allows the use of boolean arrays to
> choose
>   where a computation should be done)
> * ``vectorize`` improvements (added 'excluded' and 'cache' keyword, general
>   cleanup and bug fixes)
> * ``numpy.random.choice`` (random sample generating function)
>
>
> Compatibility notes
> ===================
>
> In a future version of numpy, the functions np.diag, np.diagonal, and the
> diagonal method of ndarrays will return a view onto the original array,
> instead of producing a copy as they do now. This makes a difference if you
> write to the array returned by any of these functions. To facilitate this
> transition, numpy 1.7 produces a FutureWarning if it detects that you may
> be attempting to write to such an array. See the documentation for
> np.diagonal for details.
>
> Similar to np.diagonal above, in a future version of numpy, indexing a
> record array by a list of field names will return a view onto the original
> array, instead of producing a copy as they do now. As with np.diagonal,
> numpy 1.7 produces a FutureWarning if it detects that you may be attempting
> to write to such an array. See the documentation for array indexing for
> details.
>
> In a future version of numpy, the default casting rule for UFunc out=
> parameters will be changed from 'unsafe' to 'same_kind'. (This also applies
> to in-place operations like a += b, which is equivalent to np.add(a, b,
> out=a).) Most usages which violate the 'same_kind' rule are likely bugs, so
> this change may expose previously undetected errors in projects that depend
> on NumPy. In this version of numpy, such usages will continue to succeed,
> but will raise a DeprecationWarning.
>
> Full-array boolean indexing has been optimized to use a different,
> optimized code path.   This code path should produce the same results,
> but any feedback about changes to your code would be appreciated.
>
> Attempting to write to a read-only array (one with ``arr.flags.writeable``
> set to ``False``) used to raise either a RuntimeError, ValueError, or
> TypeError inconsistently, depending on which code path was taken. It now
> consistently raises a ValueError.
>
> The <ufunc>.reduce functions evaluate some reductions in a different order
> than in previous versions of NumPy, generally providing higher performance.
> Because of the nature of floating-point arithmetic, this may subtly change
> some results, just as linking NumPy to a different BLAS implementations
> such as MKL can.
>
> If upgrading from 1.5, then generally in 1.6 and 1.7 there have been
> substantial code added and some code paths altered, particularly in the
> areas of type resolution and buffered iteration over universal functions.
> This might have an impact on your code particularly if you relied on
> accidental behavior in the past.
>
> New features
> ============
>
> Reduction UFuncs Generalize axis= Parameter
> -------------------------------------------
>
> Any ufunc.reduce function call, as well as other reductions like sum, prod,
> any, all, max and min support the ability to choose a subset of the axes to
> reduce over. Previously, one could say axis=None to mean all the axes or
> axis=# to pick a single axis.  Now, one can also say axis=(#,#) to pick a
> list of axes for reduction.
>
> Reduction UFuncs New keepdims= Parameter
> ----------------------------------------
>
> There is a new keepdims= parameter, which if set to True, doesn't throw
> away the reduction axes but instead sets them to have size one.  When this
> option is set, the reduction result will broadcast correctly to the
> original operand which was reduced.
>
> Datetime support
> ----------------
>
> .. note:: The datetime API is *experimental* in 1.7.0, and may undergo
> changes
>    in future versions of NumPy.
>
> There have been a lot of fixes and enhancements to datetime64 compared
> to NumPy 1.6:
>
> * the parser is quite strict about only accepting ISO 8601 dates, with a
> few
>   convenience extensions
> * converts between units correctly
> * datetime arithmetic works correctly
> * business day functionality (allows the datetime to be used in contexts
> where
>   only certain days of the week are valid)
>
> The notes in `doc/source/reference/arrays.datetime.rst
> <
> https://github.com/numpy/numpy/blob/maintenance/1.7.x/doc/source/reference/arrays.datetime.rst
> >`_
> (also available in the online docs at `arrays.datetime.html
> <http://docs.scipy.org/doc/numpy/reference/arrays.datetime.html>`_)
> should be
> consulted for more details.
>
> Custom formatter for printing arrays
> ------------------------------------
>
> See the new ``formatter`` parameter of the ``numpy.set_printoptions``
> function.
>
> New function numpy.random.choice
> ---------------------------------
>
> A generic sampling function has been added which will generate samples from
> a given array-like. The samples can be with or without replacement, and
> with uniform or given non-uniform probabilities.
>
> New function isclose
> --------------------
>
> Returns a boolean array where two arrays are element-wise equal within a
> tolerance. Both relative and absolute tolerance can be specified.
>
> Preliminary multi-dimensional support in the polynomial package
> ---------------------------------------------------------------
>
> Axis keywords have been added to the integration and differentiation
> functions and a tensor keyword was added to the evaluation functions.
> These additions allow multi-dimensional coefficient arrays to be used in
> those functions. New functions for evaluating 2-D and 3-D coefficient
> arrays on grids or sets of points were added together with 2-D and 3-D
> pseudo-Vandermonde matrices that can be used for fitting.
>
>
> Ability to pad rank-n arrays
> ----------------------------
>
> A pad module containing functions for padding n-dimensional arrays has been
> added. The various private padding functions are exposed as options to a
> public 'pad' function.  Example::
>
>     pad(a, 5, mode='mean')
>
> Current modes are ``constant``, ``edge``, ``linear_ramp``, ``maximum``,
> ``mean``, ``median``, ``minimum``, ``reflect``, ``symmetric``, ``wrap``,
> and
> ``<function>``.
>
>
> New argument to searchsorted
> ----------------------------
>
> The function searchsorted now accepts a 'sorter' argument that is a
> permutation array that sorts the array to search.
>
> Build system
> ------------
>
> Added experimental support for the AArch64 architecture.
>
> C API
> -----
>
> New function ``PyArray_RequireWriteable`` provides a consistent interface
> for checking array writeability -- any C code which works with arrays whose
> WRITEABLE flag is not known to be True a priori, should make sure to call
> this function before writing.
>
> NumPy C Style Guide added (``doc/C_STYLE_GUIDE.rst.txt``).
>
> Changes
> =======
>
> General
> -------
>
> The function np.concatenate tries to match the layout of its input arrays.
> Previously, the layout did not follow any particular reason, and depended
> in an undesirable way on the particular axis chosen for concatenation. A
> bug was also fixed which silently allowed out of bounds axis arguments.
>
> The ufuncs logical_or, logical_and, and logical_not now follow Python's
> behavior with object arrays, instead of trying to call methods on the
> objects. For example the expression (3 and 'test') produces the string
> 'test', and now np.logical_and(np.array(3, 'O'), np.array('test', 'O'))
> produces 'test' as well.
>
> The ``.base`` attribute on ndarrays, which is used on views to ensure that
> the
> underlying array owning the memory is not deallocated prematurely, now
> collapses out references when you have a view-of-a-view. For example::
>
>     a = np.arange(10)
>     b = a[1:]
>     c = b[1:]
>
> In numpy 1.6, ``c.base`` is ``b``, and ``c.base.base`` is ``a``. In numpy
> 1.7,
> ``c.base`` is ``a``.
>
> To increase backwards compatibility for software which relies on the old
> behaviour of ``.base``, we only 'skip over' objects which have exactly the
> same
> type as the newly created view. This makes a difference if you use
> ``ndarray``
> subclasses. For example, if we have a mix of ``ndarray`` and ``matrix``
> objects
> which are all views on the same original ``ndarray``::
>
>     a = np.arange(10)
>     b = np.asmatrix(a)
>     c = b[0, 1:]
>     d = c[0, 1:]
>
> then ``d.base`` will be ``b``. This is because ``d`` is a ``matrix``
> object,
> and so the collapsing process only continues so long as it encounters other
> ``matrix`` objects. It considers ``c``, ``b``, and ``a`` in that order, and
> ``b`` is the last entry in that list which is a ``matrix`` object.
>
> Casting Rules
> -------------
>
> Casting rules have undergone some changes in corner cases, due to the
> NA-related work. In particular for combinations of scalar+scalar:
>
> * the `longlong` type (`q`) now stays `longlong` for operations with any
> other
>   number (`? b h i l q p B H I`), previously it was cast as `int_` (`l`).
> The
>   `ulonglong` type (`Q`) now stays as `ulonglong` instead of `uint` (`L`).
>
> * the `timedelta64` type (`m`) can now be mixed with any integer type (`b
> h i l
>   q p B H I L Q P`), previously it raised `TypeError`.
>
> For array + scalar, the above rules just broadcast except the case when
> the array and scalars are unsigned/signed integers, then the result gets
> converted to the array type (of possibly larger size) as illustrated by the
> following examples::
>
>     >>> (np.zeros((2,), dtype=np.uint8) + np.int16(257)).dtype
>     dtype('uint16')
>     >>> (np.zeros((2,), dtype=np.int8) + np.uint16(257)).dtype
>     dtype('int16')
>     >>> (np.zeros((2,), dtype=np.int16) + np.uint32(2**17)).dtype
>     dtype('int32')
>
> Whether the size gets increased depends on the size of the scalar, for
> example::
>
>     >>> (np.zeros((2,), dtype=np.uint8) + np.int16(255)).dtype
>     dtype('uint8')
>     >>> (np.zeros((2,), dtype=np.uint8) + np.int16(256)).dtype
>     dtype('uint16')
>
> Also a ``complex128`` scalar + ``float32`` array is cast to ``complex64``.
>
> In NumPy 1.7 the `datetime64` type (`M`) must be constructed by explicitly
> specifying the type as the second argument (e.g. ``np.datetime64(2000,
> 'Y')``).
>
>
> Deprecations
> ============
>
> General
> -------
>
> Specifying a custom string formatter with a `_format` array attribute is
> deprecated. The new `formatter` keyword in ``numpy.set_printoptions`` or
> ``numpy.array2string`` can be used instead.
>
> The deprecated imports in the polynomial package have been removed.
>
> ``concatenate`` now raises DepractionWarning for 1D arrays if ``axis !=
> 0``.
> Versions of numpy < 1.7.0 ignored axis argument value for 1D arrays. We
> allow this for now, but in due course we will raise an error.
>
> C-API
> -----
>
> Direct access to the fields of PyArrayObject* has been deprecated. Direct
> access has been recommended against for many releases. Expect similar
> deprecations for PyArray_Descr* and other core objects in the future as
> preparation for NumPy 2.0.
>
> The macros in old_defines.h are deprecated and will be removed in the next
> major release (>= 2.0). The sed script tools/replace_old_macros.sed can be
> used to replace these macros with the newer versions.
>
> You can test your code against the deprecated C API by #defining
> NPY_NO_DEPRECATED_API to the target version number, for example
> NPY_1_7_API_VERSION, before including any NumPy headers.
>
> The ``NPY_CHAR`` member of the ``NPY_TYPES`` enum is deprecated and will be
> removed in NumPy 1.8. See the discussion at
> `gh-2801 <https://github.com/numpy/numpy/issues/2801>`_ for more details.
>
> Checksums
> =========
>
> 7b72cc17b6a9043f6d46af4e71cd3dbe
> release/installers/numpy-1.7.0-win32-superpack-python3.3.exe
> 4fa54e40b6a243416f0248123b6ec332  release/installers/numpy-1.7.0.tar.gz
> 9ef1688bb9f8deb058a8022b4788686c
> release/installers/numpy-1.7.0-win32-superpack-python2.7.exe
> 909fe47da05d2a35edd6909ba0152213
> release/installers/numpy-1.7.0-win32-superpack-python3.2.exe
> 5d4318b722d0098f78b49c0030d47026
> release/installers/numpy-1.7.0-win32-superpack-python2.6.exe
> 92b61d6f278a81cf9a5033b0c8e7b53e
> release/installers/numpy-1.7.0-win32-superpack-python3.1.exe
> 51d6f4f854cdca224fa56a327ad7c620
> release/installers/numpy-1.7.0-win32-superpack-python2.5.exe
> ca27913c59393940e880fab420f985b4  release/installers/numpy-1.7.0.zip
> 3f20becbb80da09412d94815ad3b586b
> release/installers/numpy-1.7.0-py2.5-python.org-macosx10.3.dmg
> 600dfa4dab31db5dc2ed9655521cfa9e
> release/installers/numpy-1.7.0-py2.6-python.org-macosx10.3.dmg
> a907a37416163b3245a30cfd160506ab
> release/installers/numpy-1.7.0-py2.7-python.org-macosx10.3.dmg
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20130210/8f1cd550/attachment.html>


More information about the NumPy-Discussion mailing list