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

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

在屏蔽數(shù)組中形成項(xiàng)目索引,計(jì)算原始排序數(shù)組中相同項(xiàng)目的索引

在屏蔽數(shù)組中形成項(xiàng)目索引,計(jì)算原始排序數(shù)組中相同項(xiàng)目的索引

Qyouu 2023-09-12 10:47:19
我使用下面的方法屏蔽了排序的一維 numpy 數(shù)組(遵循此處提出的解決方案):def get_from_sorted(sorted,idx):     mask = np.zeros(sorted.shape, bool)     mask[idx] = True     return sorted[mask]python 方法在對(duì)索引進(jìn)行屏蔽后返回?cái)?shù)組idx。例如,如果 Sorted=np.array([0.1,0.2,0.3.0.4,0.5])和 idx= np.array([4,0,1]),則該方法get_from_sorted應(yīng)該返回np.array([0.1,0.2,0.5])(注意原始數(shù)組中的順序被保留。)問(wèn)題:我需要獲取屏蔽后數(shù)組中項(xiàng)目的索引與原始列表中項(xiàng)目的索引之間的映射。在上面的例子中,這樣的映射是0 -> 01 -> 12 -> 5因?yàn)?0.1、0.2 和 0.5 分別位于 中的第 0 位、第 1 位和第 5 位sorted。如何有效地對(duì)該映射進(jìn)行編程?對(duì)效率的要求:效率是我解決問(wèn)題的關(guān)鍵。這里,“idx”和“sorted”都是一個(gè)包含 100 萬(wàn)個(gè)元素的一維數(shù)組,idx 是一個(gè)包含約 50 萬(wàn)個(gè)元素的一維數(shù)組(取自圖像處理應(yīng)用程序)。因此,針對(duì)原始數(shù)組逐一或以矢量化方式檢查屏蔽數(shù)組的元素(例如使用 np.where)在我的情況下表現(xiàn)不佳。理想情況下,屏蔽數(shù)組和原始排序數(shù)組中的索引之間應(yīng)該存在相對(duì)簡(jiǎn)單的數(shù)學(xué)關(guān)系。任何想法?
查看完整描述

3 回答

?
慕沐林林

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

有一個(gè)問(wèn)題我不清楚。它可以有多種解釋。


mask -> idx(按升序排列):

讓我嘗試一下這個(gè)相當(dāng)大的數(shù)據(jù)集(10M 的值,其中 10% 是True):


x = np.random.choice(a=[False, True], size=(10000000,), p=[0.9, 0.1])

在這種情況下,使用np.where是非常有效的:


%timeit np.where(x)[0]

%timeit x.nonzero()[0]

%timeit np.arange(len(x))[x]

24.8 ms ± 551 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)

24.5 ms ± 229 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)

52.4 ms ± 895 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)

排序的隨機(jī)項(xiàng) -> idx (按升序):

如果您丟失了對(duì)需要從中獲取的項(xiàng)目位置的任何引用sorted,您仍然可以查找idx是否沒(méi)有重復(fù)的項(xiàng)目。這是O(n logn):


x = np.random.choice(a=[False, True], size=(10000000,), p=[0.9, 0.1])

arr = np.linspace(0,1,len(x))

sub_arr = arr[x] %input data: skipping 90% of items


%timeit np.searchsorted(arr, sub_arr) %output data

112 ms ± 2.2 ms per loop (mean ± std. dev. of 7 runs, 10 loops each) 

idx(任意順序)-> idx(升序)

這很簡(jiǎn)單:


x = np.arange(10000000)

np.random.shuffle(x)

idx = x[:1000000] #input data: first 1M of random idx

%timeit np.sort(idx) #output data

65.3 ms ± 316 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)


查看完整回答
反對(duì) 回復(fù) 2023-09-12
?
茅侃侃

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

如果您需要知道屏蔽條目的來(lái)源,可以使用np.wherenp.nonzero或 之一np.flatnonzero。但是,如果您只需要獲取索引子集的起源,則可以使用我最近作為庫(kù)的一部分編寫的函數(shù) haggis:?1。haggis.npy_util.unmasked_index

給定mask一些掩碼元素的索引,您可以使用以下命令檢索原始位置的多維索引

unmasked_index(idx,?mask)

如果您需要它,還有一個(gè)反函數(shù)haggis.npy_util.masked_index,可以將多維輸入數(shù)組中的位置轉(zhuǎn)換為其在掩碼數(shù)組中的索引。


查看完整回答
反對(duì) 回復(fù) 2023-09-12
?
藍(lán)山帝景

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

我假設(shè)(根據(jù)您的示例)原始列表是排序列表。在這種情況下,除非我誤解了,否則你只需這樣做:

idx.sort()

然后映射是i-> idx[i]

當(dāng)然,如果原始順序idx很重要,請(qǐng)先復(fù)制一份。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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