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

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

如果所有列都為 0,則用 1 填充 numpy 矩陣的特定列

如果所有列都為 0,則用 1 填充 numpy 矩陣的特定列

假設(shè)我有這個(gè)矩陣:> mat  index   values    0   0 0 0 0 0    1   0 0 0 0 0    2   0 1 0 0 0    3   0 1 0 0 0    4   0 0 0 0 0    5   0 0 0 0 0    6   0 0 1 0 0    7   0 0 1 0 0    8   0 0 0 0 0如果迭代行中的所有列都是 0,我想用值 1 填充 mat 的第一列。所以那個(gè)墊子看起來像這樣:> mat  index   values    0   1 0 0 0 0    1   1 0 0 0 0    2   0 1 0 0 0    3   0 1 0 0 0    4   1 0 0 0 0    5   1 0 0 0 0    6   0 0 1 0 0    7   0 0 1 0 0    8   1 0 0 0 0這是我嘗試過的:for i in range(len(mat)):   for j in range(5):       if (mat[i][j]!=1):           mat[i][0]=1但這會(huì)將 1 放在所有列中。為什么 ?
查看完整描述

3 回答

?
牛魔王的故事

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

for i in range(len(mat)):

  for j in range(5):

      if (mat[i][j]!=1):

          mat[i][0]=1

這不起作用,因?yàn)槿绻魏瘟袨榱?,它?huì)將第一列設(shè)置為 1。如果所有列都有 0,您希望將第一列設(shè)置為 1


這會(huì)起作用


for i in range(len(mat)):

  for j in range(5):

      if (mat[i][j]==1):

          break;

      mat[i][0] = 1

此外,更好的解決方案是使用 sum


for i in range(len(mat)):

  if (sum(mat[i]) == 0):

     mat[i][0] = 1


查看完整回答
反對 回復(fù) 2022-06-22
?
拉風(fēng)的咖菲貓

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

另一種解決方案是使用 評估行numpy.any():


for i in range(len(mat)):

   mat[i][0] = 0 if np.any(mat[i]) else 1

或者干脆沒有for循環(huán)


mat[:,0] = ~np.any(mat, axis=1)


查看完整回答
反對 回復(fù) 2022-06-22
?
哆啦的時(shí)光機(jī)

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

mat[mat.sum(axis=1).astype(np.bool).flat] = 1



查看完整回答
反對 回復(fù) 2022-06-22
  • 3 回答
  • 0 關(guān)注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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