Hello all,

I'm writing up a general function to allocate aligned numpy arrays  
(I'll post it shortly, as Anne suggested that such a function would be  
useful).

However, I've run into trouble with using ndarray.view() in odd corner- 
cases:
In : numpy.__version__
Out: '1.1.0.dev5077'

In : a = numpy.ones((3,8),dtype=numpy.uint8)
In : a.view(numpy.uint16)
Out:
array([[257, 257, 257, 257],
        [257, 257, 257, 257],
        [257, 257, 257, 257]], dtype=uint16)

In : a = numpy.ones((3,9),dtype=numpy.uint8)
In : a[:,1:].view(numpy.uint16)
ValueError: new type not compatible with array.

In : a[:,:-1].view(numpy.uint16)
ValueError: new type not compatible with array.

In : numpy.array(a[:,:-1]).view(numpy.uint16)
Out:
array([[257, 257, 257, 257],
        [257, 257, 257, 257],
        [257, 257, 257, 257]], dtype=uint16)

It seems like 'view' won't create a view where the stride length is  
not a whole multiple of the dtype's itemsize. However, since strides  
are measured in bytes (right?), this shouldn't be a problem.

Is this a minor bug? Or am I woefully misunderstanding the issue  
involved here?

Thanks,
Zach
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to