4

私は配列を持っています。> 5値を1に、値<= 5をに置き換えたい0。無効な値 ( ) も考慮する必要があります999

1)私の配列:

>>> import numpy
>>> a = numpy.array([   [[2, 5, 999],[0, 12, 1]], [[999, 8, 7],[7, 11, 6]]   ])
>>> a
array([[[  2,   5, 999],
        [  0,  12,   1]],

       [[999,   8,   7],
        [  7,  11,   6]]])

2) 無効な値をマスクします。

>>> mask_a = (a==999)
>>> a_masked = numpy.ma.masked_array(a, mask = mask_a)
>>> print a_masked
[[[2 5 --]
  [0 12 1]]

 [[-- 8 7]
  [7 11 6]]]

3) 値 <= 5 をゼロに置き換えます。

>>> a_masked[a_masked<=5]=0
>>> print a_masked
[[[0 0 --]
  [0 12 0]]

 [[-- 8 7]
  [7 11 6]]]

4) 値 > 5 を 1 に置き換えたい:

>>> a_masked[a_masked>5]=1
>>> print a_masked
[[[0 0 1]
  [0 1 0]]

 [[1 1 1]
  [1 1 1]]]

すでにマスクされている値=999を考慮しないのはなぜですか???

次の結果を取得したい:

    [[[0 0 --]
      [0 1 0]]

     [[-- 1 1]
      [1 1 1]]]
4

2 に答える 2

1
a = np.piecewise(a, [a < 5, numpy.logical_and(a > 5,a <999) ,a >= 999], [0, 1,999])

1行でやりたいことができると思います...

于 2013-11-13T17:06:27.283 に答える