所以我有以下代碼:如何接受「除以零」爲零? (Python)的
import numpy as np
array1 = np.array([[[[2, 2, 3], [0, 2, 0], [2, 0, 0]],
[[1, 2, 2], [2, 2, 0], [0, 2, 3]],
[[0, 4, 2], [2, 2, 2], [2, 2, 3]]],
[[[2, 3, 0], [3, 2, 0], [2, 0, 3]],
[[0, 2, 2], [2, 2, 0], [2, 2, 3]],
[[1, 0, 2], [2, 2, 2], [2, 2, 0]]],
[[[2, 0, 0], [0, 2, 0], [2, 0, 0]],
[[2, 2, 2], [0, 2, 0], [2, 2, 0]],
[[0, 2, 2], [2, 2, 2], [2, 2, 0]]]])
array2 = np.array([[[[2, 2, 3], [0, 2, 0], [2, 0, 0]],
[[1, 2, 2], [2, 2, 0], [0, 2, 3]],
[[0, 4, 2], [2, 2, 2], [2, 2, 3]]],
[[[2, 3, 0], [3, 2, 0], [2, 0, 3]],
[[0, 2, 2], [2, 10, 0], [2, 2, 3]],
[[1, 0, 2], [2, 2, 2], [2, 2, 0]]],
[[[2, 0, 0], [0, 2, 0], [2, 0, 0]],
[[2, 2, 2], [0, 2, 0], [2, 2, 0]],
[[0, 2, 2], [2, 2, 2], [2, 2, 0]]]])
def calc(x, y):
result = y/x
return result
final_result = []
for x, y in zip(array1, array2):
final_result.append(calc(np.array(x), np.array(y)))
因此總的來說我有兩個列表,其中包括一些三維陣列,然後我已經定義了一個函數。最後一部分是我在功能中使用每個3D陣列的地方,最後我最終得到一些其他3D陣列的列表(final_result
),其中函數已用於來自array1
和array2
的每個條目。
但是,正如你所看到的,array1
最終給出函數中的x
值在一些條目中有0個值。數學上,這是不好的。但在這種情況下,我真的只需要那些沒有x
的條目爲零。因此,無論何時發生這種情況,都不需要運行函數,只需跳過它即可,並將該條目保留爲零。
可以這樣做嗎?
怎麼樣使用:try和except case來避免這樣的錯誤? – Shashank
「我有兩個包含一些3D陣列的列表」 - 這不是您發佈的代碼。該代碼使用2個4維數組。數組列表通常是一個糟糕的主意;你應該只使用它們,如果你有一個非常強大的具體理由這樣做。 – user2357112
也許我沒有使用正確的條款然後:)我實際上有(不在這裏)是一個圖像轉換成3D矩陣。所以你可能看到的4D實際上只是圖像的切片(CT掃描)。 –