第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在numpy中索引一個(gè)數(shù)組又一個(gè)數(shù)組

在numpy中索引一個(gè)數(shù)組又一個(gè)數(shù)組

阿晨1998 2019-07-09 15:29:30
在numpy中索引一個(gè)數(shù)組又一個(gè)數(shù)組假設(shè)我有一個(gè)矩陣A具有一些任意值:array([[ 2, 4, 5, 3],        [ 1, 6, 8, 9],        [ 8, 7, 0, 2]])和矩陣B其中包含A中元素的索引:array([[0, 0, 1, 2],        [0, 3, 2, 1],        [3, 2, 1, 0]])如何從A指尖B,即:A[B] = [[2, 2, 4, 5],         [1, 9, 8, 6],         [2, 0, 7, 8]]
查看完整描述

3 回答

?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

你可以用NumPy's advanced indexing -

A[np.arange(A.shape[0])[:,None],B]

你也可以用linear indexing -

m,n = A.shape
out = np.take(A,B + n*np.arange(m)[:,None])

樣本運(yùn)行-

In [40]: AOut[40]: array([[2, 4, 5, 3],
       [1, 6, 8, 9],
       [8, 7, 0, 2]])In [41]: BOut[41]: array([[0, 0, 1, 2],
       [0, 3, 2, 1],
       [3, 2, 1, 0]])In [42]: A[np.arange(A.shape[0])[:,None],B]Out[42]: array([[2, 2, 4, 5],
       [1, 9, 8, 6],
       [2, 0, 7, 8]])In [43]: m,n = A.shapeIn [44]: np.take(A,B + n*np.arange(m)[:,None])Out[44]: array([[2, 2, 4, 5],
       [1, 9, 8, 6],
       [2, 0, 7, 8]])


查看完整回答
反對(duì) 回復(fù) 2019-07-09
?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

最近的版本增加了take_along_axis做此工作的函數(shù):

In [203]: A = np.array([[ 2, 4, 5, 3], 
     ...:        [ 1, 6, 8, 9], 
     ...:        [ 8, 7, 0, 2]])                                                
     In [204]: B = np.array([[0, 0, 1, 2], 
     ...:        [0, 3, 2, 1], 
     ...:        [3, 2, 1, 0]])                                                 
     In [205]: np.take_along_axis(A,B,1)                                             
     Out[205]: array([[2, 2, 4, 5],
       [1, 9, 8, 6],
       [2, 0, 7, 8]])

還有一個(gè)put_along_axis.


查看完整回答
反對(duì) 回復(fù) 2019-07-09
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

以下是使用for循環(huán):

outlist = []for i in range(len(B)):
    lst = []    
    for j in range(len(B[i])):
        lst.append(A[i][B[i][j]])
    outlist.append(lst)outarray = np.asarray(outlist)print(outarray)

以上也可以用更簡(jiǎn)潔的列表理解形式寫(xiě)成:

outlist = [ [A[i][B[i][j]] for j in range(len(B[i]))]
                for i in range(len(B))  ]outarray = np.asarray(outlist)print(outarray)

產(chǎn)出:

[[2 2 4 5]
 [1 9 8 6]
 [2 0 7 8]]


查看完整回答
反對(duì) 回復(fù) 2019-07-09
  • 3 回答
  • 0 關(guān)注
  • 762 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)