我正在尝试为神经网络实施iRPOP学习算法。我出于性能原因使用numpy。一个重要的优化需要根据布尔数组的内容有条件地清零浮点数组的元素。等效的python代码是:
for index, condition in enumerate(boolean_array):
if condition:
float_array[index] = 0
有没有办法用numpy有效地做到这一点?
答案 0 :(得分:3)
您可以使用float_array[boolean_array] = 0
:
In [2]: boolean_array = np.array([True, False, False, True])
In [3]: float_array = np.ones(4) * 1.0
In [4]: float_array
Out[4]: array([ 1., 1., 1., 1.])
In [5]: float_array[boolean_array] = 0
In [6]: float_array
Out[6]: array([ 0., 1., 1., 0.])