将掩码添加到2 * 2 nparray中以获取值范围

时间:2017-11-27 08:37:11

标签: python arrays numpy

以下是nparray示例:

array([[ 0.70582116,  0.29417881],
   [ 0.65219176,  0.34780821],
   [ 0.82653958,  0.17346044],
   ..., 
   [ 0.76903266,  0.23096734],
   [ 0.65070963,  0.3492904 ],
   [ 0.63485813,  0.36514184]], dtype=float32)

我打算在第一列上屏蔽它,如果它大于0.7,则应用1 else 0(对于第二列,反之亦然)。所以最后nparray看起来应该是这样的:

array([[ 1,  0],
   [ 0,  1],
   [ 1,  0],
   ..., 
   [ 1,  0],
   [ 0,  1 ],
   [ 0,  1]], dtype=float32)

我怎么能通过Pythonic方式的numpy来做到这一点?谢谢!

2 个答案:

答案 0 :(得分:1)

IIUC,稍微广播的逻辑比较并转换为int

(x > 0.7).astype(int)

array([[1, 0],
       [0, 0],
       [1, 0],
       [1, 0],
       [0, 0],
       [0, 0]])

答案 1 :(得分:1)

这很简单:

arr > 0.7

这会在np.bool中产生结果。要转换为np.float32

(arr > 0.7).astype(dtype=np.float32)