使用布尔数组从两个数组中选择元素

时间:2019-06-03 11:42:00

标签: python numpy

假设我有两个形状(n,)的numpy数组a和b和一个布尔形状c(n,)的布尔数组c。

我想计算一个形状(n,)numpy数组x,如果c [i]则x [i] = a [i],否则b [i]。

例如

a = np.array([3, 4, 5])
b = np.array([-1, -5, -9])
c = np.array([True, False, True])

x = np.array([3, -5, 5]).

有人知道如何使用numpy操作吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用zip方法在列表理解中同时处理三个列表:

[aa if cc else bb for aa, bb, cc in zip(a, b, c)]

答案 1 :(得分:2)

使用numpy.where

>>> import numpy as np
>>> a = np.array([3, 4, 5])
>>> b = np.array([-1, -5, -9])
>>> c = np.array([True, False, True])
>>>
>>> np.where(c, a, b)
array([ 3, -5,  5])

使用逐元素乘法

>>> x = np.array([3, 4, 5])
>>> y = np.array([-1, -5, -9])
>>> c = np.array([True, False, True])

>>> x * c + y * (1 - c)
array([ 3, -5,  5])