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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

繁星點點滴滴 2022-06-22 22:07:50
假設(shè)我有這個矩陣:> 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 的第一列。所以那個墊子看起來像這樣:> 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但這會將 1 放在所有列中。為什么 ?
查看完整描述

3 回答

?
牛魔王的故事

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

for i in range(len(mat)):

  for j in range(5):

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

          mat[i][0]=1

這不起作用,因為如果任何列為零,它會將第一列設(shè)置為 1。如果所有列都有 0,您希望將第一列設(shè)置為 1


這會起作用


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)驗 獲得超2個贊

另一種解決方案是使用 評估行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
?
哆啦的時光機

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

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



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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