我有两个长度相同的数组:
x = [2,3,6,100,2,3,5,8,100,100,5]
y = [2,3,4,5,5,5,2,1,0,2,4]
我以这种方式选择了x == 100的位置:
在x == 100的情况下,如何获得y的值? (即y = 5,0,2)? 我试着用这种方式:
x100=np.where(x==100)
y100=y[x100]
但它没有给我我想要的价值。我该如何解决这个问题呢?
答案 0 :(得分:4)
当实际使用numpy
数组时,您的代码可以正常工作。你也可以更简洁地写它。
>>> import numpy as np
>>> x = np.array([2,3,6,100,2,3,5,8,100,100,5])
>>> y = np.array([2,3,4,5,5,5,2,1,0,2,4])
>>> y[x == 100]
array([5, 0, 2])
答案 1 :(得分:3)
x和y应该是numpy数组:
x = np.array([2,3,6,100,2,3,5,8,100,100,5])
y = np.array([2,3,4,5,5,5,2,1,0,2,4])
然后您的代码应该按预期工作。
答案 2 :(得分:1)
怎么样?
[b for (a,b) in zip(x,y) if a==100]
或
itertools.compress(y, [a==100 for a in x])
答案 3 :(得分:0)
迭代两者并检查100:
x = [2,3,6,100,2,3,5,8,100,100,5]
y = [2,3,4,5,5,5,2,1,0,2,4]
for xi, yi in zip(x, y):
if xi == 100:
print(yi)
打印:
5
0
2
或者作为列表理解:
>>> [yi for xi, yi in zip(x, y) if xi == 100]
[5, 0, 2]