esiste un modo per visualizzare una media azimutale di uno spazio cartesiano 3D?

ho un dataset contenente valori in uno spazio 200x200x38 3D. i dati sono centrati in [100.100, z] dove z è altezza, e i primi due valori sono coordinate orizzontali x e y. sto cercando di creare una visualizzazione di una sezione trasversale che calcola in media i valori nel dataset lungo un radiale e ad ogni altezza (facendo una media raggio quinario).

most efficient way to calculate radial profileThis post describes how to do a radial average for a 2D dataset , ̶ b ̶ u ̶ t ̶ ̶ I ̶ ̶ d ̶ o ̶ n ̶ ' ̶ t ̶ ̶ q ̶ u ̶ i ̶ t ̶ e ̶ ̶ u ̶ n ̶ d ̶ e ̶ r ̶ s ̶ t ̶ a ̶ n ̶ d ̶ ̶ h ̶ o ̶ w ̶ ̶ t ̶ h ̶ e ̶ y ̶ ̶ d ̶ i ̶ d ̶ ̶ t ̶ h ̶ e ̶ y ̶ ̶ b ̶ i ̶ n ̶ n ̶ e ̶ d ̶ ̶ t ̶ h ̶ e ̶ i ̶ r ̶ ̶ d ̶ a ̶ t ̶ a ̶ ̶ i ̶ n ̶ t ̶ o ̶ ̶ d ̶ i ̶ f ̶ f ̶ e ̶ r ̶ e ̶ n ̶ t ̶ ̶ r ̶ a ̶ d ̶ i ̶ i ̶ ̶ e ̶ i ̶ t ̶ h ̶ e ̶ r ̶ ̶ s ̶ i ̶ n ̶ c ̶ e ̶ . ̶ ̶ ̶ I ̶ ' ̶ v ̶ e ̶ ̶ d ̶ e ̶ f ̶ i ̶ n ̶ e ̶ d ̶ ̶ f ̶ u ̶ n ̶ c ̶ t ̶ i ̶ o ̶ n ̶ s ̶ ̶ f ̶ o ̶ r ̶ ̶ r ̶ a ̶ d ̶ i ̶ i ̶ ̶ a ̶ n ̶ d ̶ ̶ a ̶ n ̶ g ̶ l ̶ e ̶ ̶ f ̶ r ̶ o ̶ m ̶ ̶ c ̶ e ̶ n ̶ t ̶ e ̶ r ̶ , ̶ ̶ b ̶ u ̶ t ̶ ̶ d ̶ o ̶ n ̶ ' ̶ t ̶ ̶ k ̶ n ̶ o ̶ w ̶ ̶ h ̶ o ̶ w ̶ ̶ t ̶ o ̶ ̶ c ̶ o ̶ n ̶ v ̶ e ̶ r ̶ t ̶ ̶ m ̶ y ̶ ̶ C ̶ a ̶ r ̶ t ̶ e ̶ s ̶ i ̶ a ̶ n ̶ ̶ d ̶ a ̶ t ̶ a ̶ ̶ i ̶ n ̶ t ̶ o ̶ ̶ a ̶ ̶ c ̶ y ̶ l ̶ i ̶ n ̶ d ̶ r ̶ i ̶ c ̶ a ̶ l ̶ ̶ c ̶ o ̶ o ̶ r ̶ d ̶ i ̶ n ̶ a ̶ t ̶ e ̶ ̶ s ̶ h ̶ a ̶ p ̶ e ̶ . ̶

def radial_profile(data, center):
    y, x = np.indices((data.shape))
    r = np.sqrt((x - center[0])**2 + (y - center[1])**2)
    r = r.astype(np.int)

    tbin = np.bincount(r.ravel(), data.ravel())
    nr = np.bincount(r.ravel())
    radialprofile = tbin / nr
    return radialprofile 
Cent=[100,100]
Rav=[]
for i in range(37):
    B=ref[:,:,i,0]
    if B == -999.9:
        B=np.nan
    RRR=radial_profile(B,Cent)
    Rav.append(RRR)
plt.imshow(Rav, vmin=-15, vmax=70)
plt.colorbar();
plt.show()

usando questo sono stato in grado di tracciare, ma devono capire un modo per rimuovere i -999.9 valori dalla media. ho cercato di assegnarlo come nullo, ma senza successo. la trama funziona altrimenti.

EN From: Is there a way to visualize an azimuthal average a 3D Cartesian space?

More similar articles:

3 Comments

  1. se non capisci la risposta accettata a questa domanda, allora cosa stai realmente chiedendo? una buona risposta alla vostra domanda essenzialmente costruirebbe su quello…

  2. quando fai una domanda, le persone saranno meglio in grado di fornire aiuto se si fornisce il codice che possono facilmente capire e utilizzare per riprodurre il problema. potete inviare dati campione e / o codice?

  3. def radial_profile(data, center):
        y, x = np.indices((data.shape))
        r = np.sqrt((x - center[0])**2 + (y - center[1])**2)
        r = r.astype(np.int)
    
        tbin = np.bincount(r.ravel(), data.ravel())
        nr = np.bincount(r.ravel())
        radialprofile = tbin / nr
        return radialprofile 
    Cent=[100,100]
    Rav=[]
    for i in range(37):
        dbz=np.array(ref)
        dbz[dbz == -999.9]=np.nan
        B=dbz[:,:,i,0]
        RRR=radial_profile(B,Cent)
        Rav.append(RRR)
    plt.imshow(Rav, vmin=-15, vmax=70)
    plt.colorbar();
    plt.show()

    le mie scuse, avrei dovuto dare un’occhiata più difficile a cercare di capire il post a cui mi riferivo nella mia domanda.

    se qualcuno ha qualche soluzione più pulita o efficiente mi piacerebbe

Leave a Reply

Your email address will not be published. Required fields are marked *