我正在嘗試獲得相關矩陣mS的上對角線元素。因此,我正在使用np.triu(我不想在對角線上放那些,所以我使用k = 1)。但是,我想將這些元素包含在向量中。我已經閱讀了很多有關np.triu_indices的資料,但是代碼不起作用,因為我得到了錯誤:一個具有多個元素的數組的真值是模棱兩可的。使用a.any()或a.all()mS= [[1, .8, .6, .8, .7, .8, .6, .9, .5, .6, .8], [.8, 1, .8, .5, .6, .7, .7, .8, .5, .8, .7], [.6, .8, 1, .7, .8, .6, .7, .6, .7, .7, .9], [.8, .5, .7, 1, .8, .6, .8, .7, .6, .9, .8], [.7, .6, .8, .8, 1, .5, .8, .9, .9, .8, .6], [.8, .7, .6, .6, .5, 1, .9, .7, .5, .9, .8], [.6, .7, .7, .8, .8, .9, 1, .6, .8, .7, .7], [.9, .8, .6, .7, .9, .7, .6, 1, .8, .6, .9], [.5, .5, .7, .6, .9, .5, .8, .8, 1, .9, .8], [.6, .8, .7, .9, .8, .9, .7, .6, .9, 1, .8], [.8, .7, .9, .8, .6, .8, .7, .9, .8, .8, 1]]mS= np.array(mS)mSi= np.triu(mS, k=1).# Show mSimSi = array([[0. , 0.8, 0.6, 0.8, 0.7, 0.8, 0.6, 0.9, 0.5, 0.6, 0.8], [0. , 0. , 0.8, 0.5, 0.6, 0.7, 0.7, 0.8, 0.5, 0.8, 0.7], [0. , 0. , 0. , 0.7, 0.8, 0.6, 0.7, 0.6, 0.7, 0.7, 0.9], [0. , 0. , 0. , 0. , 0.8, 0.6, 0.8, 0.7, 0.6, 0.9, 0.8], [0. , 0. , 0. , 0. , 0. , 0.5, 0.8, 0.9, 0.9, 0.8, 0.6], [0. , 0. , 0. , 0. , 0. , 0. , 0.9, 0.7, 0.5, 0.9, 0.8], [0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.6, 0.8, 0.7, 0.7], [0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.8, 0.6, 0.9], [0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.9, 0.8], [0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.8], [0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]]) vPR= np.triu_indices(mS, -55) This gives me the error 我想要一個數組(名為vPR),上面的所有triu元素都放入其中。希望有人能幫忙!
2 回答

收到一只叮咚
TA貢獻1821條經驗 獲得超5個贊
函數np.triu_indices可為您提供對角線以上所有項目的索引列表。從三角矩陣開始,修剪左列和底行(因為它們包含全零),然后通過索引提取所有其他項:
np.triu(mS, k=1)[:-1, 1:][np.triu_indices(mS.shape[0] - 1)]
#array([ 0.8, 0.6, 0.8, 0.7, 0.8, 0.6, 0.9, 0.5, 0.6, 0.8, 0.8,
# 0.5, 0.6, 0.7, 0.7, 0.8, 0.5, 0.8, 0.7, 0.7, 0.8, 0.6...
添加回答
舉報
0/150
提交
取消