Python 从三维数据和相应索引获取等值面
我在网格上有一个3D numpy温度值数组。由此,我可以使用Python 从三维数据和相应索引获取等值面,python,arrays,numpy,scikit-image,isosurface,Python,Arrays,Numpy,Scikit Image,Isosurface,我在网格上有一个3D numpy温度值数组。由此,我可以使用dTdx,dTdy,dYdz=np.gradient(T)计算梯度。现在我只对温度为900的等值面上的梯度值感兴趣。我想做的是(伪科迪什): 这很好,但仅适用于二维数据。我在找3D版的。我发现了以下几点: import plotly.graph_objects as go surf = go.Isosurface(x=X.flatten(),y=Y.flatten(),z=Z.flatten(),value=T.flatten(),is
dTdx,dTdy,dYdz=np.gradient(T)
计算梯度。现在我只对温度为900的等值面上的梯度值感兴趣。我想做的是(伪科迪什):
这很好,但仅适用于二维数据。我在找3D版的。我发现了以下几点:
import plotly.graph_objects as go
surf = go.Isosurface(x=X.flatten(),y=Y.flatten(),z=Z.flatten(),value=T.flatten(),isomin=900,isomax=900)
fig = go.Figure(data=surf)
plt.show()
但我对策划它不感兴趣。我想知道温度为T=900的指数,这样我可以在梯度上使用它。有什么想法吗?你需要
import numpy as np
from skimage import measure
contour_data = measure.find_contours(T[:,:,0],900)
contour_data = np.int_(np.round(contour_data[0]))
xs,ys = contour_data[:,0],contour_data[:,1]
gradients_of_interest = np.array([G[x,y,0] for x,y in zip( xs,ys )])
import plotly.graph_objects as go
surf = go.Isosurface(x=X.flatten(),y=Y.flatten(),z=Z.flatten(),value=T.flatten(),isomin=900,isomax=900)
fig = go.Figure(data=surf)
plt.show()