假设我有两个形状(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操作吗?
谢谢!
答案 0 :(得分:3)
您可以使用zip
方法在列表理解中同时处理三个列表:
[aa if cc else bb for aa, bb, cc in zip(a, b, c)]
答案 1 :(得分:2)
>>> 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])