我有 N 個通道的 numpy 陣列(維度:N * X * Y)。我需要找到 N 個通道之間每個 X、Y 的比率。創建一個新陣列(維度:X * Y)并分配特定通道的索引(例如 N = 1),如果其比率大于閾值,則分配最大值索引。假設有 2 個通道,如果通道 1 的 X,Y 點的比率大于 0.3,我需要將 1 分配給新陣列的 (X,Y),如果小于 0.4,則分配最大通道索引。請指教,謝謝。
uj5u.com熱心網友回復:
channel1 = arr[0, :, :]將獲取通道 1 中的值作為 X x Y 陣列。
channel2 = arr[1, :, :]將獲得通道 2 中的值。然后channel1 / channel2 > 0.4將在比率大于 0.4 的任何位置為您提供一個 X x Y 陣列,其中為 True。您可以將其轉換為int1 和 0。
uj5u.com熱心網友回復:
我用下面的代碼來解決這個問題。
import numpy as np
#N * X * Y => 3 * 2 * 3
inputArray = np.array([[[1,1,1],
[1,1,1]],
[[1,2,1],
[1,2,1]],
[[3,3,3],
[3,3,3]]])
#Get the ratio
ratio = inputArray / inputArray .sum(axis=0)
print(ratio)
# Create result array
result = np.zeros((2,3))
#Check if ratio of Channel N =1 > threshold value 0.3, if true assign 1 else assign channel index of maximum ratio.
result[:,:] = np.where(ratio[1,:,:] > 0.3, 1 ,np.argmax(ratio, axis=0))
print(result)
------------------------------
>ratio:
[[[0.2 0.16666667 0.2 ]
[0.2 0.16666667 0.2 ]]
[[0.2 0.33333333 0.2 ]
[0.2 0.33333333 0.2 ]]
[[0.6 0.5 0.6 ]
[0.6 0.5 0.6 ]]]
> result:
[[2. 1. 2.]
[2. 1. 2.]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/368014.html
標籤:麻木的
