說我有兩個numpy的一維陣列a和b同樣大小的。
import numpy as np
a = np.full(10, -10)
b = np.random.rand(10)
print(a)
# [-10 -10 -10 -10 -10 -10 -10 -10 -10 -10]
print(b)
# [0.8725654 0.48385524 0.67801994 0.30381863 0.95460565 0.73915384 0.38097293 0.4604181 0.91182102 0.33428477]
現在我想使用 for 回圈根據某些條件使用陣列a中的元素更新陣列b,例如:
for i, x in enumerate(a):
if x < b[i]:
a[i] = b[i]
print(a)
# [0 0 0 0 0 0 0 0 0 0]
為什么我得到一個全零陣列而不是陣列中的值b?
uj5u.com熱心網友回復:
如果使用a = np.full(10, -10)的資料型別是int32。因此,您從陣列 b 分配的值將四舍五入為 0。只需使用:
a = np.full(10, -10, dtype=float)
它應該作業。
uj5u.com熱心網友回復:
koxx 的答案是正確的,但我也建議您使用 numpy 方法而不是 for 回圈來執行此操作。此代碼應為您提供相同的輸出:
import numpy as np
a = np.full(10, 0.5)
b = np.random.rand(10)
a = np.maximum(a, b)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/403491.html
標籤:
