Python 从numpy memmap切片创建ndarray
我想知道如何确定一个对象是直接memmap对象还是它的切片后代 解决此问题的最简单方法是举一个例子:Python 从numpy memmap切片创建ndarray,python,arrays,numpy,shared-memory,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.]
>>> 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)在本例中,您可以检查以下项的
OWNDATA
参数:
b.flags
属性,该属性对于切片是
False
。检查函数get\u data\u base
from。我不确定它是否能与memmaps一起使用,但它应该是先验的。@user3701099在本例中,您可以检查b.flags
属性的OWNDATA
参数,对于一个切片,这是False
。@SaulloCastro标志中的OWNDATA属性工作正常,非常有用straightforward@eickenbergget_data_base函数也可以从您创建的链接中工作post@user3701099好的,很高兴知道@SaulloCastro感谢OWNDATA
!