如果我有一個NxN numpy數組,並且如果有負數作爲任何位置,是否有一種簡單而快速的方法,我可以用0替換該數字? 像如何用0替換數組中的所有負數
for item in array:
if item <= 0:
item = 0
如果我有一個NxN numpy數組,並且如果有負數作爲任何位置,是否有一種簡單而快速的方法,我可以用0替換該數字? 像如何用0替換數組中的所有負數
for item in array:
if item <= 0:
item = 0
可以屏蔽通過使用布爾面具整個數組,這將是比迭代像你更有效當前是:
In [41]:
array = np.random.randn(5,3)
array
Out[41]:
array([[-1.09127791, 0.51328095, -0.0300959 ],
[ 0.62483282, -0.78287353, 1.43825556],
[ 0.09558515, -1.96982215, -0.58196525],
[-1.23462258, 0.95510649, -0.76008193],
[ 0.22431534, -0.36874234, -1.46494516]])
In [42]:
array[array < 0] = 0
array
Out[42]:
array([[ 0. , 0.51328095, 0. ],
[ 0.62483282, 0. , 1.43825556],
[ 0.09558515, 0. , 0. ],
[ 0. , 0.95510649, 0. ],
[ 0.22431534, 0. , 0. ]])
基於this SO answer,您可以使用numpy
這是內置的索引。
arr[arr < 0] = 0
這個答案對我來說有什麼不同? – EdChum
我在發帖時沒有看到你的回答。我不會刪除我的,因爲它增加了一些新的東西,這是一個包含解釋和基準測試的參考。不過,我擔心你的問題,我認爲這應該成爲第一個答案。 – lucasnadalutti
我沒有重複答案的問題,只要它添加了新的東西,如果您將相關部分添加到您的答案中而不僅僅是一個鏈接,只是一個觀察結果會更好 – EdChum
'陣列[陣列<= 0] 0' =還應你說負工作,不應該它是'陣列[陣列<0] = 0'而非'<= 0'? – EdChum
@EdChum ...它沒有什麼不同,因爲你最終用'0'代替了'0'。唯一的區別可能是,如果數組有'浮動',有些'0'有'負號',而另一些有正號,通過將'0'分配給所有'正號',相信所有的操作應該都是一樣的。 – Bakuriu
@Bakuriu true,但是在<<0'和'<= 0'之間存在語義上的差異,而不考慮最終結果,否則很明顯'<0'表示負數,而<<= 0'不表示 – EdChum