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

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

重組 3d numpy 數(shù)組

重組 3d numpy 數(shù)組

慕斯王 2021-08-24 18:22:21
我已經(jīng)嘗試并搜索了幾天,我已經(jīng)接近但需要您的幫助。我在 python 中有一個(gè) 3d 數(shù)組,shape(files) >> (31,2049,2)它對(duì)應(yīng)于 31 個(gè)輸入文件,其中包含 2 列數(shù)據(jù)、2048 行和一個(gè)標(biāo)題。我想根據(jù)每個(gè)文件中的標(biāo)題(一個(gè)數(shù)字)對(duì)這個(gè)數(shù)組進(jìn)行排序。我試圖遵循NumPy:sorting 3D array but保持 2nd dimension分配給 first,但我非常困惑。首先,我嘗試為 argsort 設(shè)置獲取我的標(biāo)頭,我想我可以做到sortval=files[:][0][0]但這不起作用..然后我只是做了一個(gè) for 循環(huán)來(lái)迭代并獲取我的標(biāo)題for i in xrange(shape(files)[0]:     sortval.append([i][0][0])然后sortedIdx = np.argsort(sortval)這有效,但是我不明白最后一行發(fā)生了什么..files = files[np.arange(len(deck))[:,np.newaxis],sortedIdx]幫助將不勝感激。
查看完整描述

2 回答

?
蕭十郎

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

這里我們可以用一個(gè)簡(jiǎn)單的例子來(lái)演示你的代碼在做什么:


首先我們創(chuàng)建一個(gè)隨機(jī)的 3D numpy 矩陣:


a = (np.random.rand(3,3,2)*10).astype(int)

array([[[3, 1],

        [3, 7],

        [0, 3]],

       [[2, 9],

        [1, 0],

        [9, 2]],

       [[9, 2],

        [8, 8],

        [8, 0]]])

然后a[:]將給出a自己,并且a[:][0][0]只是第一個(gè)二維數(shù)組中的第一行a,即:


a[:][0]

# array([[3, 1],

#        [3, 7],

#        [0, 3]])


a[:][0][0]

# array([3, 1])

你想要的是3,2,9這個(gè)例子中的標(biāo)題,所以我們可以a[:, 0, 0]用來(lái)提取它們:


a[:,0,0]

# array([3, 2, 9])

現(xiàn)在我們對(duì)上面的列表進(jìn)行排序并得到一個(gè)索引數(shù)組:


np.argsort(a[:,0,0])

# array([1, 0, 2])

為了重新排列整個(gè) 3D 數(shù)組,我們需要以正確的順序?qū)?shù)組進(jìn)行切片。并且np.arange(len(a))[:,np.newaxis]等于np.arange(len(a)).reshape(-1,1)創(chuàng)建一個(gè)連續(xù)的二維索引數(shù)組:


np.arange(len(a))[:,np.newaxis]

# array([[0],

#        [1],

#        [2]])

沒(méi)有二維數(shù)組,我們將數(shù)組切片為二維


a[np.arange(3), np.argsort(a[:,0,0])]

# array([[3, 7],

#        [2, 9],

#        [8, 0]])

使用 2D 數(shù)組,我們可以執(zhí)行 3D 切片并保持形狀:


a[np.arange(3).reshape(-1,1), np.argsort(a[:,0,0])]

array([[[3, 7],

        [3, 1],

        [0, 3]],

       [[1, 0],

        [2, 9],

        [9, 2]],

       [[8, 8],

        [9, 2],

        [8, 0]]])

以上就是你想要的最終結(jié)果。


編輯:


要排列二維數(shù)組:,可以使用:


a[np.argsort(a[:,0,0])]

array([[[2, 9],

        [1, 0],

        [9, 2]],

       [[3, 1],

        [3, 7],

        [0, 3]],

       [[9, 2],

        [8, 8],

        [8, 0]]])


查看完整回答
反對(duì) 回復(fù) 2021-08-24
?
月關(guān)寶盒

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

另一種方法是使用 np.take

header = a[:,0,0]
sorted = np.take(a, np.argsort(header), axis=0)


查看完整回答
反對(duì) 回復(fù) 2021-08-24
  • 2 回答
  • 0 關(guān)注
  • 190 瀏覽
慕課專(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)