[Numpy-tickets] [NumPy] #424: stable argsort() and sort() behave differently on 2-column uint64 arrays. possibly a bug in argsort() or sort() .
NumPy
numpy-tickets at scipy.net
Mon Jan 15 18:32:04 CST 2007
#424: stable argsort() and sort() behave differently on 2-column uint64 arrays.
possibly a bug in argsort() or sort() .
------------------------+---------------------------------------------------
Reporter: ciro | Owner: somebody
Type: defect | Status: new
Priority: high | Milestone: 1.0.2 Release
Component: numpy.core | Version: 1.0.1
Severity: major | Keywords:
------------------------+---------------------------------------------------
numpy 1.0.1 fails to pass the following
in a reproducible way.
=====================================================================
#!/usr/bin/env python2.4
from numpy import *
N = 500000
X = zeros((N,2), uint64)
for i in range(N):
X[i,0] = random.randint(2**20) << 43 # if we set highest bit -
problems
# X[i,0] = random.randint(2**20) << 42 # this works, instead
X2 = X[:,0].copy()
X2.sort(kind='mergesort')
X_index = X[:,0].argsort(kind='mergesort')
X[:,0] = take(X[:,0], X_index)
print alltrue(X2 == X[:,0])
============================================================
Conversely, the following always works:
N = 500000
X = zeros(N, uint64)
for i in range(N):
X[i] = random.randint(2**20) << 43 # if we set highest bit, ok in
this case
# X[i] = random.randint(2**20) << 42 # this works
X2 = X.copy()
X2.sort(kind='mergesort')
X_index = X.argsort(kind='mergesort')
X = take(X, X_index)
print alltrue(X2 == X)
===================================================
behavior seems inconsistent across architectures and numpy versions.
--
Ticket URL: <http://projects.scipy.org/scipy/numpy/ticket/424>
NumPy <http://projects.scipy.org/scipy/numpy>
The fundamental package needed for scientific computing with Python.
More information about the Numpy-tickets
mailing list