在 numpy 逻辑切片之后梳理然后维护索引

Combing and then maintaining indicies after numpy Logical Slicing

我正在尝试对两个列表进行逻辑切片,然后将它们连接在一起,同时保持原始索引。

这是我目前拥有的:

x = np.array([0,12,2,246,13,42,245,235,26,33,235,236,23])
y = np.array([2,2,52,626,143,42,246,2,2,53,35,26,263])

r_1 = x<=y
r_2 = y<x

r = np.concatenate((x[r_1],y[r_2]))

这会产生以下列表:

[  0   2 246  13  42 245  33  23   2   2   2  35  26]

相反,我希望它逐个索引并填充较低的值。理想的列表是:

[0,2,2,246,13,42,245,2,2,26,33,26,23]

我知道这可以通过 for 循环来完成,但我将在数千个数据点上执行此操作,使 numpy 成为一个理想的选择。

有什么建议吗?

谢谢!

只需使用np.min([x,y], axis=0)

正如 mathfux 刚才所说,np.min([x,y], axis=0) 将完美解决您的问题。

但以防万一您需要执行更复杂的逻辑操作,请查看我的解决方案,该解决方案效率稍低但易于定制 ;)

x = np.array([0,12,2,246,13,42,245,235,26,33,235,236,23])
y = np.array([2,2,52,626,143,42,246,2,2,53,35,26,263])

r_1 = x<=y
r_2 = y<x

r = np.zeros_like(x)
r[r_1] = x[r_1]
r[r_2] = y[r_2]