2

私は2つの配列を持っています:

マスク:値0および1、dtype = uint8

>>> mask
array([[0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [1, 1, 1, ..., 0, 0, 0],
       ..., 
       [1, 1, 1, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)

およびprova_clip

>>> prova_clip
array([[289, 281, 271, ..., 257, 255, 255],
       [290, 284, 268, ..., 260, 260, 259],
       [294, 283, 264, ..., 265, 263, 257],
       ..., 
       [360, 359, 360, ..., 335, 338, 331],
       [359, 364, 369, ..., 337, 342, 339],
       [358, 363, 368, ..., 332, 331, 332]], dtype=uint16)

コード保存メソッドを使用してprova_clipをマスクでマスクして

array([[0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [294, 283, 264, ..., 0, 0, 0],
       ..., 
       [360, 359, 360, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0]], dtype=uint16)
4

1 に答える 1

5

何か不足していますか?これは次のように簡単に思えます:

prova_clip*mask

次に例を示します。

>>> a = np.arange(10,dtype=np.uint16)
>>> mask = np.ones(10,dtype=np.uint8)
>>> mask[1:3] = 0
>>> a*mask
array([0, 0, 0, 3, 4, 5, 6, 7, 8, 9], dtype=uint16)

配列をその場で変更する複雑な方法で行うこともできます。

>>> b = np.arange(10,dypte=np.uint16)
>>> b[~mask.astype(bool)] = 0
>>> b
array([0, 0, 0, 3, 4, 5, 6, 7, 8, 9], dtype=uint16)

最後に、次のnumpy.whereとおりです。

>>> c = np.arange(10,dtype=np.uint8)
>>> np.where(mask==0,0,c)
array([0, 0, 0, 3, 4, 5, 6, 7, 8, 9], dtype=uint16)
于 2012-11-16T21:02:15.767 に答える