我想知道如何确定一个对象是一个直接的memmap对象还是一个对象的切片。
问题的最简单方法是举例:
>>> import numpy as np
>>> filename = '../sandbox/test.bin'
>>> a = np.memmap(filename, dtype='float32', offset=0, shape=(4,2), order='F')
>>> print a
[[ 1. 5.]
[ 2. 6.]
[ 3. 7.]
[ 4. 8.]]
>>> a.filename
'Z:\\CNI\\sandbox\\test.bin'
>>> a.shape
(4L, 2L)
>>> a.offset
0
>>>
>>> b = a[:,1]
>>> print b
[ 5. 6. 7. 8.]
>>> b.filename
'Z:\\CNI\\sandbox\\test.bin'
>>> b.shape
(4L,)
>>> b.offset
0
>>>
我如何确定b不是一个memmap对象,而是一个切片后代? 或者至少b的偏移是错误的。 (在此示例中,偏移量应为4)
答案 0 :(得分:1)
在此示例中,您可以检查:
的OWNDATA
参数
b.flags
属性,对于切片是False
...