On 5/24/07, Albert Strasheim <[EMAIL PROTECTED]> wrote:
Hello all
Me vs the flags again. I found another case where the flags aren't what I
would expect:
In [118]: x = N.array(N.arange(24.0).reshape(6,4), order='F')
In [119]: x
Out[119]:
array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[ 12., 13., 14., 15.],
[ 16., 17., 18., 19.],
[ 20., 21., 22., 23.]])
In [120]: x[:,0:1]
Out[120]:
array([[ 0.],
[ 4.],
[ 8.],
[ 12.],
[ 16.],
[ 20.]])
# start=0, stop=1, step=2
In [121]: x[:,0:1:2]
Out[121]:
array([[ 0.],
[ 4.],
[ 8.],
[ 12.],
[ 16.],
[ 20.]])
In [122]: x[:,0:1].flags
Out[122]:
C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : False
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
The column is C_CONTIGUOUS also. Another example that should be both
C_CONTIGUOUS and F_CONTIGUOUS is
In [1]: ones(2)[:,newaxis].flags
Out[1]:
C_CONTIGUOUS : False
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
I think indices that can only have the value 0 should be ignored in
determining contiguity, but it seems we are not doing that at the moment.
Another example:
In [3]: array([1])[:,newaxis].flags
Out[3]:
C_CONTIGUOUS : False
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
In [123]: x[:,0:1:2].flags
Out[123]:
C_CONTIGUOUS : False
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
In [124]: x[:,0:1].strides
Out[124]: (8, 48)
In [125]: x[:,0:1:2].strides
Out[125]: (8, 96)
The views are slightly different (as can be seen from at least the
strides),
but I'd expect F_CONTIGUOUS to be true in both cases. I'm guessing that
somewhere this special case isn't being checked for, which translates into
a
"missed opportunity" for marking the view as contiguous. Probably not a
bug
per se, but I thought I'd mention it here.
Contiguous detection misses a few opportunities but it is hard to get all
the cases right. But maybe we can improve it a bit more.
Chuck
_______________________________________________
Numpy-discussion mailing list
[email protected]
http://projects.scipy.org/mailman/listinfo/numpy-discussion