Hi, I have a (UInt16) 3d data stack and want to get to it's underlying buffer (to (later) feed it into memmap) ... I noticed that len(pr2._flat) is half of len(pr2._data)  like it doesn't multiply itemsize in.
pr2.shape
(40, 512, 512)
pr2.flat.shape
(10485760)
512*512*40
10485760
len(pr2.flat)
10485760
pr2.flat._itemsize
2
len(pr2._data)
20971520
pr2._byteoffset
0
Is this a bug or am I missunderstanding ?
Thanks, Sebastian Haase
On Wed, 20041027 at 12:58, Sebastian Haase wrote:
Hi, I have a (UInt16) 3d data stack and want to get to it's underlying buffer (to (later) feed it into memmap) ... I noticed that len(pr2._flat) is half of len(pr2._data)  like it doesn't multiply itemsize in.
pr2.shape
(40, 512, 512)
pr2.flat.shape
(10485760)
512*512*40
10485760
len(pr2.flat)
10485760
pr2.flat._itemsize
2
len(pr2._data)
20971520
pr2._byteoffset
0
Is this a bug
No.
or am I missunderstanding ?
Yes. _data is "an object which supports the buffer protocol". In this context, it is effectively a string and thus the product of the total number of elements and the itemsize. (We'll ignore for now the fact that not every array uses the entire buffer.) In contrast, shape(.flat) is only the total number of elements and is independent of itemsize.
Regards, Todd
Of course ! sorry I forgot.
Thanks, Sebastian
On Friday 29 October 2004 06:26 am, Todd Miller wrote:
On Wed, 20041027 at 12:58, Sebastian Haase wrote:
Hi, I have a (UInt16) 3d data stack and want to get to it's underlying buffer (to (later) feed it into memmap) ... I noticed that len(pr2._flat) is half of len(pr2._data)  like it doesn't multiply itemsize in.
pr2.shape
(40, 512, 512)
pr2.flat.shape
(10485760)
512*512*40
10485760
len(pr2.flat)
10485760
pr2.flat._itemsize
2
len(pr2._data)
20971520
pr2._byteoffset
0
Is this a bug
No.
or am I missunderstanding ?
Yes. _data is "an object which supports the buffer protocol". In this context, it is effectively a string and thus the product of the total number of elements and the itemsize. (We'll ignore for now the fact that not every array uses the entire buffer.) In contrast, shape(.flat) is only the total number of elements and is independent of itemsize.
Regards, Todd
This Newsletter Sponsored by: Macrovision For reliable Linux application installations, use the industry's leading setup authoring tool, InstallShield X. Learn more and evaluate today. http://clk.atdmt.com/MSI/go/ins0030000001msi/direct/01/ _______________________________________________ Numpydiscussion mailing list Numpydiscussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/numpydiscussion
participants (2)

Sebastian Haase

Todd Miller