从numpy memmap slice创建ndarray

时间:2014-11-13 04:26:01

标签: python arrays numpy shared-memory

我想知道如何确定一个对象是一个直接的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)

1 个答案:

答案 0 :(得分:1)

在此示例中,您可以检查:

OWNDATA参数
b.flags

属性,对于切片是False ...