我有一個(gè)看起來像這樣的數(shù)組:np.array([[0 , 5, 1], [0, 0, 3], [1, 7, 0]])我想檢查每個(gè)元素是否非零,如果它非零,則用一個(gè)數(shù)字替換它,以跟蹤它檢查了多少元素。也就是說,我希望最終產(chǎn)品看起來像np.array([[0, 2, 3], [0, 0, 6], [7, 8, 0]])其中第一行讀取[0, 2, 3]是因?yàn)榈诙€(gè)元素被第二個(gè)檢查,通過了測試,然后被替換(等等)。誰能想到任何解決方案?我想numpy的索引在這里會(huì)非常有用。謝謝!
2 回答

有只小跳蛙
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
你可以做:
np.where(a == 0, a, np.arange(a.size).reshape(a.shape) + 1)

泛舟湖上清波郎朗
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您需要修改初始數(shù)組 - 使用掩碼數(shù)組的附加方法:
(來自 IPython 交互式控制臺(tái)會(huì)話)
In [211]: arr = np.array([[0, 5, 1], [0, 0, 3], [1, 7, 0]])
In [212]: m = arr.nonzero()
In [213]: arr[m] = np.arange(1, arr.size+1).reshape(arr.shape)[m]
In [214]: arr
Out[214]:
array([[0, 2, 3],
[0, 0, 6],
[7, 8, 0]])
添加回答
舉報(bào)
0/150
提交
取消