1

我有两个相同长度的数组:

 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 的位置:

y 的值怎么可能在 x==100 的地方?(即 y=5,0,2)?我试过这样:

 x100=np.where(x==100)
 y100=y[x100]

但它没有给我我想要的价值观。我该如何解决这个问题?

4

4 回答 4

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])
于 2013-05-31T12:22:25.337 回答
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])

然后您的代码应该可以按预期工作。

于 2013-05-31T11:02:36.600 回答
1

关于什么

[b for (a,b) in zip(x,y) if a==100]

或者

itertools.compress(y, [a==100 for a in x])
于 2013-05-31T10:52:52.107 回答
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]
于 2013-05-31T10:52:02.557 回答