有没有办法可视化3D笛卡尔空间的方位角平均值?

时间:2019-06-02 01:47:31

标签: python arrays cartesian-coordinates

我有一个数据集,其中包含200x200x38 3D空间中的值。数据以[100,100,z]为中心,其中z是高度,前两个值是水平x和y坐标。我正在尝试创建横截面的可视化效果,以求沿径向和每个高度对数据集中的值求平均值(得出高度-半径平均值)。

Most efficient way to calculate radial profile 这篇文章介绍如何为一个二维数据集做了径向平均水平,但我不很明白他们怎么他们的分级数据转换成不同的半径要么̶s̶i̶n̶c̶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()

使用此功能,我已经能够进行绘制,但是必须找出一种方法来从平均值中除去-999.9值。我试图将其分配为null,但没有成功。否则该情节会起作用。

1 个答案:

答案 0 :(得分:0)

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()

抱歉,我应该更努力地理解我在问题中所指的帖子。

如果有人有更清洁或更有效的解决方案,我将不胜感激