根据一行中的其他数组更新数组的元素?

时间:2019-02-09 19:19:54

标签: python

我有两个分别称为y和R(相同尺寸)的数组。 R由1和0组成。我正在尝试根据R的元素为0将y的元素更改为0,否则保持不变。 我尝试了这一行:

y=[0 for a in y if for b in r if b==0]

,但表示语法无效。我该如何更改?

2 个答案:

答案 0 :(得分:0)

您可以枚举一个列表,通过索引访问另一个列表:

y = [2,3,4,5,6,7]
R = [0,0,1,1,0,1]

res = [ 0 if R[i] == 0 else a for i, a in enumerate(y) ]
#=> [0, 0, 4, 5, 0, 7]

[ 0 if r == 0 else y[i] for i, r in enumerate(R) ]
#=> [0, 0, 4, 5, 0, 7]


使用NumPy的替代方法:

import numpy as np
y = np.array([2,3,4,5,6,7])
R = np.array([0,0,1,1,0,1])

print(y * R)
#=> [0 0 4 5 0 7]

答案 1 :(得分:0)

以这种方式重写列表理解:

y = [0 if j == 0 else i for i, j in zip(y, R)]

您无效的sintax错误来自for之后的if,对于解释器而言,这没有任何意义。