對(duì)于一個(gè)編程項(xiàng)目,我正在嘗試實(shí)施修剪和填充方法來量化元分析中的偏差。算法中的步驟之一是在不丟失符號(hào)的情況下對(duì)向量元素的絕對(duì)值進(jìn)行排序,例如我需要的是這樣的:a_before = np.array([1, 3, -3, -2, 5, 2.5, 6])
a_after = np.array([1, 4, -5, 2, 6, 3, 7])到目前為止,我所管理的是使用 獲取具有絕對(duì)值的數(shù)組numpy.absolute,然后使用 對(duì)值進(jìn)行排名.argsort。我想不通的是如何檢索新排名數(shù)組的原始負(fù)值的符號(hào)。這是進(jìn)一步說明的屏幕截圖。
2 回答

慕俠2389804
TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
a_before = np.array([1, 4, -5, 2, 6, 3, 7]) a_after = a_before[np.argsort(np.abs(a_before))]
輸出結(jié)果a_after
為:
array([ 1, 2, 3, 4, -5, 6, 7])

Helenr
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
我想這就是你想要的:
# use bigger numbers so that it's obvious that 'rank'
# is distinct from the numerical values.
a = np.array([10, 30, -31, -20, 50, 25, 60])
isort = np.argsort(np.abs(a))
rank = np.argsort(isort)+1
signed_rank = rank * np.sign(a)
print(signed_rank)
輸出:
[ 1 4 -5 -2 6 3 7]
-2但我認(rèn)為您的建議中缺少一個(gè)減號(hào) ( ) a_after: [1, 4, -5, 2, 6, 3, 7];只有一個(gè)負(fù)值,而輸入有兩個(gè)負(fù)值。
添加回答
舉報(bào)
0/150
提交
取消