我有两个分别称为y和R(相同尺寸)的数组。 R由1和0组成。我正在尝试根据R的元素为0将y的元素更改为0,否则保持不变。 我尝试了这一行:
y=[0 for a in y if for b in r if b==0]
,但表示语法无效。我该如何更改?
答案 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]
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
,对于解释器而言,这没有任何意义。