【发布时间】:2020-05-23 06:56:49
【问题描述】:
我想应用排序操作,每行一行,只保持高于给定阈值的值。
为此,我看到我可以使用掩码数组来应用阈值。
但是,argsort 一直在考虑掩码值(低于阈值)并将其替换为 fill_value。
但是,如果值已被替换为 NaN,我根本不想要任何结果。
a = np.array([[0.522235,0.128270,0.708973],
[0.994557,0.844426,0.366608],
[0.986669,0.143659,0.395891],
[0.291339,0.421843,0.278869],
[0.250303,0.861475,0.904534],
[0.973436,0.360466,0.751913]])
threshold = 0.5
m_a = np.ma.masked_less_equal(a, threshold)
argsorted = m_a.argsort(-1)
这给了我:
array([[0, 2, 1],
[1, 0, 2],
[0, 1, 2],
[0, 1, 2],
[1, 2, 0],
[2, 0, 1]])
但我想得到:
array([[0, NaN, 1],
[1, 0, NaN],
[0, NaN, NaN],
[NaN, NaN, NaN],
[NaN, 0, 1],
[ 1, NaN, 0]])
有什么想法可以得到这个结果吗?
感谢您的帮助! 最好的,
【问题讨论】:
-
是的,你是对的,我马上改正。
标签: python numpy np.argsort