按行组应用卷积

2024-04-25 12:43:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧如下:

   profile_index  point_index         z              x             y
0              0            1 -0.885429  297903.323027  6.669492e+06
1              0            2 -0.820151  297904.117752  6.669492e+06
2              0            3 -0.729671  297904.912476  6.669491e+06
3              0            4 -0.649332  297905.707201  6.669490e+06
4              1            1 -0.692186  297906.501926  6.669490e+06
5              1            2 -0.885429  297903.323027  6.669492e+06
6              1            3 -0.820151  297904.117752  6.669492e+06
3              1            4 -0.649332  297905.707201  6.669490e+06

我想通过应用卷积来创建一个新的“zègauss”列(卷积)对向量(z列)使用高斯滤波器,对应于我的数据帧中具有相同“profile\u index”的一组行。你知道吗

我试过做类似的事情

data["z_gauss"] = data.groupby('profile_index').apply(lambda x: np.convolve(x, gaussian, 'same'))

其中gaussian是我的高斯滤波器(向量)。但是我有一些错误,比如ValueError: object too deep for desired array

你对如何进行有什么建议/提示吗?我应该把数据帧分割成不同的数据帧吗?你知道吗


Tags: 数据lambdadataindexnpgaussianprofile事情
1条回答
网友
1楼 · 发布于 2024-04-25 12:43:44

您希望使用变换而不是应用。这将避免插入每行大小为组的向量:

data["z_gauss"] = (data.groupby('profile_index')['z']
                   .transform(lambda x: np.convolve(x, gaussian, 'same')))

相关问题 更多 >