亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Numpy 索引 - 使用解散索引進行基本索引

Numpy 索引 - 使用解散索引進行基本索引

30秒到達戰場 2021-11-30 16:57:34
如果我有以下 4D 數組:mat = np.array(np.arange(27)).reshape((3,3,3))[[[ 0  1  2]  [ 3  4  5]  [ 6  7  8]] [[ 9 10 11]  [12 13 14]  [15 16 17]] [[18 19 20]  [21 22 23]  [24 25 26]]]以及以下解開索引:ind = np.unravel_index([7], mat.shape[1:])(array([2], dtype=int64), array([1], dtype=int64))什么是最好的訪問方式mat[:, 2, 1][ 7 16 25]使用解散索引?我正在尋找這個問題的通用解決方案,其中維度數量mat可能會有所不同。我知道我可以做這樣的事情:new_ind = (np.arange(mat.shape[0]),) +  indmat[new_ind][ 7 16 25]但我想知道是否有辦法做到這一點,不需要顯式構建新索引?
查看完整描述

1 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

您確實需要構造一個新的索引元組:


In [8]: ind=np.unravel_index([7,8],(3,3))                                       

In [9]: ind                                                                     

Out[9]: (array([2, 2]), array([1, 2]))

In [10]: (slice(None),*ind)                                                     

Out[10]: (slice(None, None, None), array([2, 2]), array([1, 2]))

In [11]: np.arange(27).reshape(3,3,3)[_]                                        

Out[11]: 

array([[ 7,  8],

       [16, 17],

       [25, 26]])

在Out[10]相當于添加:到您的拆開的指標:


In [12]: np.s_[:,[2,2],[1,2]]                                                   

Out[12]: (slice(None, None, None), [2, 2], [1, 2])


查看完整回答
反對 回復 2021-11-30
  • 1 回答
  • 0 關注
  • 242 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號