在 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 成为一个理想的选择。
有什么建议吗?
谢谢!
正如 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]
我正在尝试对两个列表进行逻辑切片,然后将它们连接在一起,同时保持原始索引。
这是我目前拥有的:
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 成为一个理想的选择。
有什么建议吗?
谢谢!
正如 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]