Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
pythonnumpy:将一个数组中的值替换为另一个数组中的相应值_Python_Arrays_Python 2.7_Numpy - Fatal编程技术网

pythonnumpy:将一个数组中的值替换为另一个数组中的相应值

pythonnumpy:将一个数组中的值替换为另一个数组中的相应值,python,arrays,python-2.7,numpy,Python,Arrays,Python 2.7,Numpy,我使用的是Python Numpy数组(具体来说,是转换为2D数组的光栅),我想做的是取一个数组,该数组具有表示“无数据”的任意伪值-999,我想用正确位置相同大小和形状的不同数组中相应的“实”值替换这些值。我找不到与此非常类似的问题,但请注意,我是Python和Numpy的新手 但我想做的是: array_a = ([[0.564,-999,-999], [0.234,-999,0.898], [-999,0.124,0.687], [0.478,0.786,-999]]) arr

我使用的是Python Numpy数组(具体来说,是转换为2D数组的光栅),我想做的是取一个数组,该数组具有表示“无数据”的任意伪值-999,我想用正确位置相同大小和形状的不同数组中相应的“实”值替换这些值。我找不到与此非常类似的问题,但请注意,我是Python和Numpy的新手

但我想做的是:

array_a = 
([[0.564,-999,-999],
 [0.234,-999,0.898],
 [-999,0.124,0.687], 
 [0.478,0.786,-999]])

array_b = 
([[0.324,0.254,0.204],
 [0.469,0.381,0.292],
 [0.550,0.453,0.349], 
 [0.605,0.582,0.551]])
使用数组_b的值填充数组_a中的-999值并创建一个新数组:

new_array_a = 
([[0.564,0.254,0.204],
 [0.234,0.381,0.898],
 [0.550,0.124,0.687], 
 [0.478,0.786,0.551]])
我真的不想更改阵列的形状或尺寸,因为之后我将转换回光栅,所以我需要在正确的位置使用正确的值。
执行此操作的最佳方法是什么?

只需执行布尔掩蔽:

mask = (array_a == -999)
new_array = np.copy(array_a)
new_array[mask] = array_b[mask]
你需要做的就是

array_a[array_a==-999]=array_b[array_a==-999]
我们正在对要更新的数组元素设置布尔条件,其值应为-999

import numpy as np
array_a =np.array([[0.564,-999,-999],
 [0.234,-999,0.898],
 [-999,0.124,0.687], [![enter image description here][1]][1]
 [0.478,0.786,-999]])

array_b =np.array([[0.324,0.254,0.204],
 [0.469,0.381,0.292],
 [0.550,0.453,0.349], 
 [0.605,0.582,0.551]])
array_a[array_a==-999]=array_b[array_a==-999]
运行此代码段


深入研究。是的,我研究了这个问题,我能够用以下方法屏蔽数组a中的-999个值:mask\u a=ma。masked\u where(array\u a<-1,array\u a),但接下来呢?我刚刚删除了-999值,我不知道如何将数组_b中的值放到相同的位置?嘿,太好了!我认为这是可行的!谢谢!>>>[0.564,-999,--999,--999,,…[0.234,--999,0.999,0.999,0.898,,,…[999.999,0.124,0.124,0.687 7,,,…[0.124,0.124,0.124,0.124,0.124,0.124,0.687 7 7 7 7 7,,,…[0.124,0.124,0.124,0.687 7 7 7 7 7 7,,,,,,…[0.0.0.124,0.124,0.687 7 7 7 7 7 7 7 7 0.0.0.0.7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7,,,,,,,,,,,,,,,…[0.0.0.0.0.0.0.0.7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7掩码]=数组_b[掩码]>>>打印新的_数组[[0.564 0.254 0.204][0.234 0.381 0.898][0.55 0.124 0.687][0.478 0.786 0.551]>>>>我怀疑这是否有用,甚至根本不起作用。为了让我信服,请解释这是如何工作的,以及为什么它应该解决问题。很简单,你只考虑那些对这两种情况都适用的部分。请在你的答案中解释(如何和为什么)。请不要只发布代码作为答案,但也要解释一下你的代码是做什么的,以及它是如何解决问题的。带有解释的答案通常更有帮助,质量更好,更有可能吸引更多的选票。@DimaKozhevin我已经更新了它。请再看一遍