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

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)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
mat[mat.sum(axis=1).astype(np.bool).flat] = 1
添加回答
舉報(bào)