2014-11-13 5 views
1

오브젝트가 직접 memmap 오브젝트 또는 슬라이스 하위 오브젝트인지 판별하는 방법이 궁금합니다.numpy memmap 슬라이스에서 ndarray를 생성하십시오.

질문의 예와 같이하는 가장 쉬운 방법은 :

>>> 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의 오프셋이 잘못되었습니다. 당신의 OWNDATA 매개 변수를 확인하실 수 있습니다이 예에서는

+0

체크 아웃 함수 [get_data_base] [여기] (http://ipython-books.github.io/featured-01/)에서. 나는 그것이 memmaps와 함께 작동하는지 1000 % 확신하지는 않지만 선험적으로해야한다. – eickenberg

+1

@ user3701099이 예제에서 'b.flags' 애트리뷰트의'OWNDATA' 매개 변수를 확인할 수 있습니다. 슬라이스의 경우 'False'입니다. –

+0

@SaulloCastro 플래그 애트리뷰트의 OWNDATA가 작동하며 매우 간단합니다 – Joshua

답변

1

(이 예에서는 4를해야 오프셋) : ...

b.flags 

속성, 조각에 대한 False입니다

관련 문제