2017-02-09 4 views
0

私は大きいnumpy arraynumpy.memmapを使用して以下のように作成しました。numpy.memmapから読み取るxy座標に基づいてオフセットを計算する方法は?

import numpy as np 
memmapData = np.memmap('test.memmap', dtype='uint8', mode='w+', shape=(10000, 10000, 3)) 

ここで、XY座標に基づいて配列を読み取る方法を説明します。読んだ後、私は長方形を描く必要があります。 Y1 = 1000、X2 = X1 + 500、Y2 = Y1 + 500である。だから、どうすれば上記の座標でnum37の配列をtest.memmapから読み取ることができますか?この方法では、numpy.memmap属性offsetを使用する必要があります。

答えて

0

なぜoffsetを使用する必要がありますか?あなたは通常の配列のようにインデックスを作成できませんか?

In [221]: memmapData = np.memmap('test.memmap', dtype='uint8', mode='w+', shape= 
    ...: (10, 10, 3)) 

In [222]: memmapData[...]=np.arange(100).reshape(10,10)[:,:,None] 

In [223]: memmapData[0,5,:] 
Out[223]: memmap([5, 5, 5], dtype=uint8) 

In [224]: memmapData[0,5:,:] 
Out[224]: 
memmap([[5, 5, 5], 
     [6, 6, 6], 
     [7, 7, 7], 
     [8, 8, 8], 
     [9, 9, 9]], dtype=uint8) 

offsetは、マップの作成時に指定できるパラメータです。修正されました。あなたは要素にアクセスするためにそれを試していません。

+0

@ hpauljあなたのコードを少し簡単に説明できますか? –

関連する問題