On Thu, Apr 24, 2008 at 11:29 AM, Zachary Pincus <[EMAIL PROTECTED]> wrote: > Here's my attempt at aligned_empty(). It only accepts alignments that are > an integer multiple (or divisor) of the dtype's itemsize, because of > limitations in ndarray.view().
aligned_empty() works for me (after removing the if: suite that guards this case) because it correctly .view()s before it slices. aligned_empty_arbitrary() doesn't because it slices before it .view()s. In [14]: aligned_allocator.aligned_empty((5,5), float, 3) Out[14]: array([[ -2.00773895e+002, 2.12196342e-314, 3.41914975e-307, 5.47724529e-306, 9.16023223e-310], [ 7.82990492e-317, 1.36379628e-316, 0.00000000e+000, 0.00000000e+000, 1.27361195e-313], [ 4.94065646e-324, 7.00258612e-313, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000], [ 0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000], [ 0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000]]) In [15]: aligned_allocator.aligned_empty_arbitrary((5,5), float, 3) --------------------------------------------------------------------------- ValueError Traceback (most recent call last) /Users/rkern/today/<ipython console> in <module>() /Users/rkern/today/aligned_allocator.py in aligned_empty_arbitrary(shape, dtype, byte_alignment, order) 53 byte_shape = tuple(other_shape) + (aligned_byte_width,) 54 aligned_view = aligned_buffer.reshape(byte_shape, order='C') ---> 55 requested_view = aligned_view[..., :byte_width].view(dtype) 56 if order == 'F': 57 return requested_view.T ValueError: new type not compatible with array. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion