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