Yet another problem in CVS numarray

Hi, I've detected another problem in CVS numarray when converting non-contiguous Numeric objects. With numarray 1.3.3 the next works:
Numeric.__version__ '23.8' numarray.__version__ '1.3.3' num=Numeric.array([1,2,3,4],'b') num2=num[::2] num2.iscontiguous() 0 na=numarray.array(num2) na array([1, 3])
but, with CVS version of numarray:
numarray.__version__ '1.4.2' Numeric.__version__ '24.1' na=numarray.array([1,2,3,4],'b') num=Numeric.array([1,2,3,4],'b') num2=num[::2] num2.iscontiguous() 0 na=numarray.array(num2) Traceback (most recent call last): File "<stdin>", line 1, in ? File "/usr/lib/python2.4/site-packages/numarray/numarraycore.py", line 376, in array a = a.astype(type) File "/usr/lib/python2.4/site-packages/numarray/numarraycore.py", line 863, in astype return self.copy() File "/usr/lib/python2.4/site-packages/numarray/numarraycore.py", line 923, in copy c = _gen.NDArray.copy(self) File "/usr/lib/python2.4/site-packages/numarray/generic.py", line 724, in copy arr._itemsize) numarray.libnumarray.error: copy1bytes: access beyond buffer. offset=2 buffersize=2
Cheers, --
0,0< Francesc Altet http://www.carabos.com/ V V Cárabos Coop. V. Enjoy Data "-"

This turned out to be a problem with the way numarray handles Numeric's multi-segment buffer protocol. I worked around this by implementing David Cooke's __array_struct__ array interface for numarray. I'm now seeing times like these: numarray-->Numeric array_if: [0.20523881912231445, 0.19724917411804199, 0.17538094520568848] numarray-->Numeric fromstring: [0.28353691101074219, 0.21145009994506836, 0.22541189193725586] Numeric-->numarray array_if: [0.40105700492858887, 0.34915614128112793, 0.39094209671020508] Numeric-->numarray buffer_if: [0.29201602935791016, 0.25055789947509766, 0.23227095603942871] As you can see, the numarray-->Numeric array_if is now faster than fromstring() and Numeric-->numarray array_if is now getting close to the time for constructing a numarray from a buffer. Todd Francesc Altet wrote:
Hi,
I've detected another problem in CVS numarray when converting non-contiguous Numeric objects.
With numarray 1.3.3 the next works:
Numeric.__version__
'23.8'
numarray.__version__
'1.3.3'
num=Numeric.array([1,2,3,4],'b') num2=num[::2] num2.iscontiguous()
0
na=numarray.array(num2) na
array([1, 3])
but, with CVS version of numarray:
numarray.__version__
'1.4.2'
Numeric.__version__
'24.1'
na=numarray.array([1,2,3,4],'b') num=Numeric.array([1,2,3,4],'b') num2=num[::2] num2.iscontiguous()
0
na=numarray.array(num2)
Traceback (most recent call last): File "<stdin>", line 1, in ? File "/usr/lib/python2.4/site-packages/numarray/numarraycore.py", line 376, in array a = a.astype(type) File "/usr/lib/python2.4/site-packages/numarray/numarraycore.py", line 863, in astype return self.copy() File "/usr/lib/python2.4/site-packages/numarray/numarraycore.py", line 923, in copy c = _gen.NDArray.copy(self) File "/usr/lib/python2.4/site-packages/numarray/generic.py", line 724, in copy arr._itemsize) numarray.libnumarray.error: copy1bytes: access beyond buffer. offset=2 buffersize=2
Cheers,
participants (2)
-
Francesc Altet
-
Todd Miller