python求函数零点,如何在python中绘制三维数据的核密度估计(KDE)和过零点?

本文介绍了如何使用Python进行3维数据集的核密度估计(KDE)和通过梯度计算过零点区域,展示了如何将DataFrame转换为数组,并利用Scipy库进行数据分析。重点在于理解KDE在数据分布上的应用及如何追踪特征变化的临界点。
摘要由CSDN通过智能技术生成

过零点应该是矢量吗?。在下面的代码中是元组df = pd.read_csv(file, delimiter = ',')

Convert series from data-frame into arrays

X = np.array(df['x'])

Y = np.array(df['y'])

Z = np.array(df['z'])

data = np.vstack([X, Y, Z])

# perform KDE

kernel = scipy.stats.kde.gaussian_kde(data)

density = kernel(data)

fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))

x, y, z = data

scatter = ax.scatter(x, y, z, c=density)

xmin = values[0].min()

xmax = values[0].max()

ymin = values[1].min()

ymax = values[1].max()

zmin = values[2].min()

zmax = values[2].max()

X,Y, Z = np.mgrid[xmin:xmax:100j,ymin:ymax:100j,zmin:zmax:100j]

positions = np.vstack([X.ravel(),Y.ravel(),Z.ravel()])

f = np.reshape(kernel(positions).T, X.shape)

derivative = np.gradient(f)

dz, dy, dx = derivative

xdiff = np.sign(dx) # along X-axis

ydiff = np.sign(dy) # along Y-axis

zdiff = np.sign(dz) # along Z-axis

xcross = np.where(xdiff[:-1] != xdiff[1:])

ycross = np.where([ydiff[:-1] != ydiff[1:]])

zcross = np.where([zdiff[:-1] != zdiff[1:]])

Zerocross = xcross + ycross + zcross

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值