Skip to main content
 首页 » 编程设计

python之用一维数组中的值替换二维数组中的填充值

2025年05月04日16bhlsheji

我的目标是使用与二维数组中的值模式完全匹配的一维数组中的值填充二维数组。例如:

array_a =  
([[nan,nan,0], 
 [0,nan,0], 
 [nan,0,0],  
 [0,0,nan]]) 
 
array_b =  
([0.324,0.254,0.204, 
0.469,0.381,0.292, 
0.550]) 

我想得到这个:

array_c =  
([[nan,nan,0.324], 
 [0.254,nan,0.204], 
 [nan,0.469,0.381],  
 [0.292,0.550,nan]]) 

array_a 中需要填充的值的数量将与array_b 中的值的数量完全匹配。主要问题是我想在整个数组中以适当的顺序排列 nan 值,但我不确定如何最好地做到这一点。

请您参考如下方法:

bool 索引很好地完成了这项工作:

找到nan:

In [229]: mask = np.isnan(array_a) 
In [230]: mask 
Out[230]:  
array([[ True,  True, False], 
       [False,  True, False], 
       [ True, False, False], 
       [False, False,  True]]) 

应用于数组的 bool 掩码产生一维数组:

In [231]: array_a[~mask] 
Out[231]: array([0., 0., 0., 0., 0., 0., 0.]) 

在 set 上下文中使用相同的数组:

In [232]: array_a[~mask]=array_b 
In [233]: array_a[~mask] 
Out[233]: array([0.324, 0.254, 0.204, 0.469, 0.381, 0.292, 0.55 ]) 
In [234]: array_a 
Out[234]:  
array([[  nan,   nan, 0.324], 
       [0.254,   nan, 0.204], 
       [  nan, 0.469, 0.381], 
       [0.292, 0.55 ,   nan]])