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

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

如何根據(jù)一行的平均值設(shè)置閾值?

如何根據(jù)一行的平均值設(shè)置閾值?

湖上湖 2021-08-05 10:36:21
我有一個(gè)二維數(shù)組。我想將每一行中大于該行平均值的所有值設(shè)置為 0。一些天真地執(zhí)行此操作的代碼是:new_arr = arr.copy()for i, row in enumerate(arr):    avg = np.mean(row)    for j, pixel in enumerate(row):        if pixel > avg:            new_arr[i,j] = 0        else:            new_arr[i,j] = 1這很慢,我想知道是否有某種方法可以使用 Numpy 索引來(lái)做到這一點(diǎn)?如果它是整個(gè)矩陣的平均值,我可以簡(jiǎn)單地做:mask = arr > np.mean(arr)arr[mask] = 0arr[np.logical_not(mask)] = 1是否有某種方法可以使用一維平均值數(shù)組或類(lèi)似的東西對(duì)每行平均值執(zhí)行此操作?編輯:建議的解決方案:avg = np.mean(arr, axis=0)mask = arr > avgnew_arr = np.zeros(arr.shape)arr[mask] = 1實(shí)際上使用的是列平均值,這對(duì)某些人也可能有用。它相當(dāng)于:new_arr = arr.copy()for i, row in enumerate(arr.T):    avg = np.mean(row)    for j, pixel in enumerate(row):        if pixel > avg:            new_arr[j,i] = 0        else:            new_arr[j,i] = 1
查看完整描述

3 回答

?
慕容3067478

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

設(shè)置


a = np.arange(25).reshape((5,5))

你可以用keepdims與mean:


a[a > a.mean(1, keepdims=True)] = 0

array([[ 0,  1,  2,  0,  0],

       [ 5,  6,  7,  0,  0],

       [10, 11, 12,  0,  0],

       [15, 16, 17,  0,  0],

       [20, 21, 22,  0,  0]])

使用keepdims=True, 給出以下結(jié)果mean:


array([[ 2.],

       [ 7.],

       [12.],

       [17.],

       [22.]])

文檔中說(shuō)明了這樣做的好處:


如果將其設(shè)置為 True,則減少的軸將作為尺寸為 1 的維度保留在結(jié)果中。使用此選項(xiàng),結(jié)果將針對(duì)輸入數(shù)組正確廣播。


查看完整回答
反對(duì) 回復(fù) 2021-08-05
?
慕娘9325324

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

您可以使用np.mean(a, axis=1)來(lái)獲取每行的平均值,將其廣播到 的形狀a,并將所有值設(shè)置a > broadcasted_mean_array為 0:


示例:


a = np.arange(25).reshape((5,5))

>>> a

array([[ 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]])


a[a > np.broadcast_to(np.mean(a,axis=1),a.shape).T] = 0 


>>> a

array([[ 0,  1,  2,  0,  0],

       [ 5,  6,  7,  0,  0],

       [10, 11, 12,  0,  0],

       [15, 16, 17,  0,  0],

       [20, 21, 22,  0,  0]])


查看完整回答
反對(duì) 回復(fù) 2021-08-05
?
忽然笑

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

使用axis關(guān)鍵字表示您的意思:


avg = np.mean(arr, axis=0)

然后使用它來(lái)創(chuàng)建您的掩碼并分配您想要的值:


mask = avg>=arr

new_arr = np.zeros(arr.shape)

arr[mask] = 1

當(dāng)然,您可以直接從掩碼創(chuàng)建一個(gè)新數(shù)組,而無(wú)需兩步方法。


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