我正在處理由 2D 檢測器記錄的一組資料。因此,資料由三個陣串列示:標記像素的坐標并x存盤測量的信號。yintensity
例如,一個 6x6 的網格會給出一組資料:
xraw = np.array([0,1,2,3,4,5,0,1,2,3,4,5,...])
yraw = np.array([0,0,0,0,0,0,1,1,1,1,1,1,...])
intensity = np.array([i_00,i_01,i_02,i_03,i_04,i_05,i_10,i_11,...])
由于各種原因,例如像素缺陷,原始資料中的一些資料點被丟棄。因此,xraw, yraw, intensity尺寸小于 36(如果那是 6x6 網格),比方說,缺少 (2,3) 處的點。
強度資料需要通過與另一個陣列的元素相乘來進一步處理。該處理陣列來自理論計算,因此它的大小為 nxn(在本例中為 6x6)。但是,由于缺少真實資料中的某些點,因此兩個陣列的大小不同。
我可以使用回圈來檢查缺失點并消除處理陣列中的相應元素。我想知道是否有一些方法numpy可以處理此類操作。謝謝
uj5u.com熱心網友回復:
首先,通過以下方式構造可用和所有可能像素位置的索引
avail_ind = yraw * h xraw
all_ind = np.arange(0, h * w)
其中h和w是影像的高度和寬度(以像素為單位)。
然后,通過以下方式找到丟失像素的索引
missing_ind = all_ind[~np.in1d(all_ind, avail_ind)]
一旦缺少索引,請使用洗掉索引處的元素np.delete構造一個副本,然后簡單地將其與您的陣列treatment_array相乘。intensity
result = intensity * np.delete(treatment_array, missing_ind)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464600.html
