[英]grouping consecutive values in python np.array
我有一個數組(500 * 490),長有數據。 它實際上是來自雷達的原始數據。 我計划創建某種跟蹤,根據陣雨和雷暴在數組中的值來查找陣雨和雷暴。 取值范圍是0到75。
為了找到基於閾值的陣雨和雷暴,我從原始的h5圖像創建了一個數組,使用h5py讀取文件,然后從中創建一個數組。
import numpy as np
from numpy import inf
import pylab as pl
import math
import h5py
import scipy
import scipy.spatial
np.set_printoptions(threshold=10)
# read data
# *********
print "Reading & converting data data (mm/u - dbz)"
f = h5py.File('test.h5','r')
data = f.get('image1/image_data')
data_as_array = np.array(data)
datadbz = 20 * np.ma.log10(data_as_array)
print "*** Data read & converted"
print "raw array data = 'data_as_array'"
print "dbz array data = 'datadbz'"
print ""
# print raw data
# **************
print "Array from h5-file"
print "******************"
print data_as_array
print "*"
print ""
datadbz[datadbz == -inf] = 0
datadbz[datadbz == 96.32946777] = 0
datadbz[datadbz < 40] = 0
print "Array in dbz"
print "************"
print datadbz
print ""
# > 40 dbz
pixelarray = np.array(zip(*np.where(datadbz > 40)))
print "Array wich cores (> 40 dbz)"
print "***************************"
print pixelarray
print "*"
print ""
# > 55 dbz
hailarray = np.array(zip(*np.where(datadbz > 55)))
print "Array with cores (> 55 dbz)"
print "***************************"
print hailarray
print "*"
print ""
我需要使用的2個數組是數組“ pixelarray”,它看起來像python shell中的以下代碼片段
Array wich cores (> 40 dbz)
***************************
[[ 5 106]
[ 5 107]
[ 6 105]
...,
[440 270]
[440 271]
[489 151]]
*
另一個是“ hailarray”,在python shell中看起來像這樣
Array with cores (> 55 dbz)
***************************
[[ 7 104]
[ 8 103]
[ 27 194]
...,
[433 272]
[435 272]
[438 271]]
*
我遇到的問題是...
如果這是有問題的雷達圖像:
該數組包含雜波,應將其丟棄並忽略。 這些是圖像上的小斑點和點。 但是,我需要的是暴風雨/陣雨。
為此,我需要弄清楚如何將雜波(隨機斑點(數組中的值))與圖像中的實際回聲(數組中的數據范圍)區分開來
由於我使用的數組看起來像這樣,所以每個值的二重奏分別代表檢測的x像素和y像素
[[ 5 106]
[ 5 107]
[ 6 105]
...,
[440 270]
[440 271]
[489 151]]
*
我正在考慮將pixelranges分組在一起。 我知道有可能在數組中使用“連續值”並將它們分組在一起,但是我還沒有找到正確執行此方法的方法,因為我的數組看起來更像某種矩陣。
由於我不是python專家,因此我想向正確的方向指出如何解決這個問題。 一旦完成此操作,這就是“僅”一個問題,即找出哪些組的維數大於某個閾值,這樣我就可以擺脫雜亂的斑點,而只剩下暴風雨了。
然后,我可以將這些較大的組的中心用作風暴的中心,並完成跟蹤。
因此,如果有人可以幫助我在檢測陣列中設置連續像素范圍的搜索功能,我將永遠感激不已,因為我無法忍受嘗試在這里發明輪子的感覺。
如果您有足夠的內存,則可以構建圖像的密集表示,並使用數組在此處設置相應的像素。 然后,您可以在圖像上使用腐蝕濾鏡以消除噪聲(例如SciPy的binary_erosion )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.