【发布时间】:2020-02-29 01:49:41
【问题描述】:
我有一个数组 data_set,大小:(172800,3) 和掩码数组,大小 (172800) 由 1 和 0 组成。我想用我定义的值替换基于掩码数组中的值(0或1)的值形式data_set数组:例如:[0,0,0]或[128,16,128]。
我试过“np.placed”函数,但这里的问题是掩码数组的大小不正确。
我还检查了更 Pythonic 的方式: data_set[mask]= [0,0,0] 它工作得很好,但是对于某些理由,只有 2 个第一个元素。
data_set[mask]= [0,0,0]
data_set = np.place(data_set, mask, [0,0,0])
如果掩码值为 1,我的预期输出是将 data_set 矩阵中元素的值更改为 [0,0,0]。
例如
data_set = [[134,123,90] , [234,45,65] , [32,233,45]]
mask = [ 1, 0, 1]
output = [[0,0,0] , [234, 45,65] , [0,0,0]]
【问题讨论】:
-
试试
data_set[mask.astype(bool)] = 0 -
或
data_set[np.where(mask)] = 0.,data_set[mask == 1] = 0. -
谢谢。它适用于 [0,0,0] 但如果我需要用其他值(如 ex. [128,16,128]?
-
data_set[mask.astype(bool)] = [128,16,128] -
太棒了!谢谢。