我不知道如何描述这个,所以我只是展示它。
我该怎么做......
for iy in random_y:
print(x[np.where(y == iy)], iy)
X y
[ 0.5] : 0.247403959255
[ 2.] : 0.841470984808
[ 49.5]: -0.373464754784
没有for循环,我得到的解决方案就像使用np.where()
或array[cond]
时的单个数组一样。既然你知道,那就是Python B)
注意:我想要这样做的原因是因为我有一个Y值的随机子集,我想找到相应的X值。
答案 0 :(得分:2)
如果您正在寻找完全匹配,您只需使用np.in1d
,因为这是一个完美的使用场景,就像这样 -
first_output = x[np.in1d(y,random_y)]
second_output = random_y[np.in1d(random_y,y)
如果您正在处理浮点数,则可能需要在比较中使用一些容差因子。因此,对于此类情况,您可以使用NumPy broadcasting
,然后使用np.where
,就像这样 -
tol = 1e-5 # Edit this to change tolerance
R,C = np.where(np.abs(random_y[:,None] - y)<=tol)
first_output = x[C]
second_output = random_y[R]
答案 1 :(得分:0)
也许这可以解决问题(未经测试):
print(Str(x[np.where(y == iy)]) + " " + Str(iy) + "\n") for iy in random_y