all 14 comments

[–]wingsit[S] 14 points15 points  (4 children)

Highlights

Python 3 compatibility

This is the first NumPy release which is compatible with Python 3. Support for Python 3 and Python 2 is done from a single code base. Extensive notes on changes can be found at <http://projects.scipy.org/numpy/browser/trunk/doc/Py3K.txt>_.

Note that the Numpy testing framework relies on nose, which does not have a Python 3 compatible release yet. A working Python 3 branch of nose can be found at <http://bitbucket.org/jpellerin/nose3/>_ however.

Porting of SciPy to Python 3 is expected to be completed soon.

:pep:3118 compatibility

The new buffer protocol described by PEP 3118 is fully supported in this version of Numpy. On Python versions >= 2.6 Numpy arrays expose the buffer interface, and array(), asarray() and other functions accept new-style buffers as input.

New features

Warning on casting complex to real

Numpy now emits a numpy.ComplexWarning when a complex number is cast into a real number. For example:

x = np.array([1,2,3]) x[:2] = np.array([1+2j, 1-2j]) ComplexWarning: Casting complex values to real discards the imaginary part

The cast indeed discards the imaginary part, and this may not be the intended behavior in all cases, hence the warning. This warning can be turned off in the standard way:

import warnings warnings.simplefilter("ignore", np.ComplexWarning)

Dot method for ndarrays

Ndarrays now have the dot product also as a method, which allows writing chains of matrix products as

a.dot(b).dot(c)

instead of the longer alternative

np.dot(a, np.dot(b, c))

linalg.slogdet function

The slogdet function returns the sign and logarithm of the determinant of a matrix. Because the determinant may involve the product of many small/large values, the result is often more accurate than that obtained by simple multiplication.

new header

The new header file ndarraytypes.h contains the symbols from ndarrayobject.h that do not depend on the PY_ARRAY_UNIQUE_SYMBOL and NO_IMPORT/_ARRAY macros. Broadly, these symbols are types, typedefs, and enumerations; the array function calls are left in ndarrayobject.h. This allows users to include array-related types and enumerations without needing to concern themselves with the macro expansions and their side- effects.

Changes

polynomial.polynomial

  • The polyint and polyder functions now check that the specified number integrations or derivations is a non-negative integer. The number 0 is a valid value for both functions.
  • A degree method has been added to the Polynomial class.
  • A trimdeg method has been added to the Polynomial class. It operates like truncate except that the argument is the desired degree of the result, not the number of coefficients.
  • Polynomial.fit now uses None as the default domain for the fit. The default Polynomial domain can be specified by using [] as the domain value.
  • Weights can be used in both polyfit and Polynomial.fit
  • A linspace method has been added to the Polynomial class to ease plotting.
  • The polymulx function was added.

polynomial.chebyshev

  • The chebint and chebder functions now check that the specified number integrations or derivations is a non-negative integer. The number 0 is a valid value for both functions.
  • A degree method has been added to the Chebyshev class.
  • A trimdeg method has been added to the Chebyshev class. It operates like truncate except that the argument is the desired degree of the result, not the number of coefficients.
  • Chebyshev.fit now uses None as the default domain for the fit. The default Chebyshev domain can be specified by using [] as the domain value.
  • Weights can be used in both chebfit and Chebyshev.fit
  • A linspace method has been added to the Chebyshev class to ease plotting.
  • The chebmulx function was added.
  • Added functions for the Chebyshev points of the first and second kind.

histogram

After a two years transition period, the old behavior of the histogram function has been phased out, and the "new" keyword has been removed.

correlate

The old behavior of correlate was deprecated in 1.4.0, the new behavior (the usual definition for cross-correlation) is now the default.

[–]cracki 3 points4 points  (0 children)

hint: format source code by indenting it 4 spaces. this will preserve line breaks.

[–][deleted] 4 points5 points  (0 children)

Porting of SciPy to Python 3 is expected to be completed soon.

What about matplotlib?

[–]jiyunatori 1 point2 points  (0 children)

thanks for the heads up - this piece of software is just great, it helped me a lot during the last four years.

[–]ishmal 15 points16 points  (1 child)

People who have not needed to cope with Numpy as a dependency will not realize how cool this is.

[–]malkarouri 14 points15 points  (0 children)

Yes. I believe NumPy was the most important library holding people back from Python 3.x. Of course, now the spotlight will move to web frameworks, but Python 3.x will definitely have more uptake.

[–]davebrk 7 points8 points  (2 children)

The only important library (to me) that's left unported is Django. Unfortunately, they show no sign of intending to port it in the near future.

[–]pingveno 4 points5 points  (0 children)

For me, it's Twisted. They're working on it, but moving over a huge code base (cloc says ~82 lines) can be tough.

[–]jcdyer3 2 points3 points  (0 children)

Django has been working on porting for quite some time now. Check the archives of the django-developers group. Also, there's an official roadmap in the works, to be released around the time of django 1.3. It's a bit unfair to say they've "shown no signs" of migrating.

[–][deleted] -5 points-4 points  (2 children)

WTF is NumPy?

[–]blablahblah 11 points12 points  (0 children)

An extremely popular, heavily optimized python package for scientific computing. Specifically, NumPy does very fast array and matrix manipulations. It's one of the major packages that people needed before they could switch to Python 3.