Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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_Numpy - Fatal编程技术网

Python numpy数组上的条件语句

Python numpy数组上的条件语句,python,numpy,Python,Numpy,我有三个巨大的numpy.array,需要快速执行一些涉及所有三个numpy.array的条件语句。所有numpy.array都具有相同的维度(NxD)(N>2和D>1)和相同的数据类型。 通常我会做如下所示 for i in range(n): for j in range(d): if np.sign(nabla[i][j]) != np.sign(delta[i][j]): g[i][j] = g[i][j] + 0.2

我有三个巨大的numpy.array,需要快速执行一些涉及所有三个numpy.array的条件语句。所有numpy.array都具有相同的维度(NxD)(N>2和D>1)和相同的数据类型。 通常我会做如下所示

 for i in range(n):
     for j in range(d):
         if np.sign(nabla[i][j]) != np.sign(delta[i][j]):
             g[i][j] = g[i][j] + 0.2
         if np.sign(nabla[i][j]) == np.sign(delta[i][j]):
             g[i][j] = g[i][j] * 0.8
如果我只需要操作一个numpy.array,我会这样做

g[g < val] = newval
g[g

<> p>但由于δ和nabLA大于二维,所以应用相同的原理,即:

应考虑使用布尔索引,例如:

mask = np.sign(nabla) == np.sign(delta)
g[mask] *= 0.8
g[~mask] += 0.2
或者:

g = np.where(np.sign(nabla) == np.sign(delta), g * 0.8, g + 0.2)