Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何基于掩码数组更改numpy数组?_Python_Arrays_Numpy_Mask - Fatal编程技术网

Python 如何基于掩码数组更改numpy数组?

Python 如何基于掩码数组更改numpy数组?,python,arrays,numpy,mask,Python,Arrays,Numpy,Mask,我有一个数组数据集,大小:(172800,3)和掩码数组,大小(172800)由1和0组成。我想用我定义的值替换基于掩码数组中的值(0或1)的值形式的数据集数组:ex:[0,0,0]或[128,16128] 我尝试过“np.place”函数,但这里的问题是掩码数组的大小不正确 我还检查了更像蟒蛇的方式: data_set[mask]=[0,0,0]它工作得很好,但由于某些原因,仅针对前两个元素 data_set[mask]= [0,0,0] data_set = np.place(data_s

我有一个数组数据集,大小:(172800,3)和掩码数组,大小(172800)由1和0组成。我想用我定义的值替换基于掩码数组中的值(0或1)的值形式的数据集数组:ex:[0,0,0]或[128,16128]

我尝试过“np.place”函数,但这里的问题是掩码数组的大小不正确

我还检查了更像蟒蛇的方式: data_set[mask]=[0,0,0]它工作得很好,但由于某些原因,仅针对前两个元素

data_set[mask]= [0,0,0]

data_set = np.place(data_set, mask, [0,0,0])
我的预期输出是,如果掩码值为1,则将data_set矩阵中元素的值更改为[0,0,0]


当您尝试使用
mask
numpy为数据编制索引时,会假定您为其提供了一个索引列表。使用布尔数组,或将掩码转换为索引列表:

将numpy导入为np
data_set=np.数组([[134123,90],[234,45,65],[32233,45])
mask=np.array([1,0,1])
val=np.zero(数据集形状[1])
数据集[mask.astype(bool),:]=val
#或
数据集[np.where(掩码),:]=val
第一种方法将int数组转换为bool数组,而第二种方法创建一个掩码不为零的索引列表


您可以将
val
设置为所需的任何值,只要它与数据集的剩余维度相匹配(在本例中为
3
)。

尝试
data\u set[mask.astype(bool)]=0
data\u set[np.where(mask)]=0
data\u set[mask==1]=0
。谢谢。它与[0,0,0]一起工作,但是如果我需要用其他值替换它,比如ex[128,16128]?
data\u set[mask.astype(bool)]=[128,16128]
great!非常感谢。
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]]