根据另一个数组的内容有条件地替换数组的元素

时间:2014-09-13 22:47:46

标签: python arrays python-3.x numpy

我正在尝试为神经网络实施iRPOP学习算法。我出于性能原因使用numpy。一个重要的优化需要根据布尔数组的内容有条件地清零浮点数组的元素。等效的python代码是:

for index, condition in enumerate(boolean_array):
    if condition:
        float_array[index] = 0

有没有办法用numpy有效地做到这一点?

1 个答案:

答案 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.])