3 回答

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ù)組正確廣播。

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]])

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ú)需兩步方法。
添加回答
舉報(bào)