我有一个数据集,其中包含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,但没有成功。否则该情节会起作用。
答案 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()
抱歉,我应该更努力地理解我在问题中所指的帖子。
如果有人有更清洁或更有效的解决方案,我将不胜感激