如何在Python 3.7中应用argrelextrema函数?

2024-04-23 10:11:45 发布

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

我正在尝试将argrelextrema函数应用于数据帧df。但无法正确应用。下面是我的代码

    import pandas as pd
    from scipy.signal import argrelextrema 
    np.random.seed(42)

        def maxloc(data):
            loc_opt_ind = argrelextrema(df.values, np.greater)
            loc_max = np.zeros(len(data))
            loc_max[loc_opt_ind] = 1
            data['loc_max'] = loc_max
            return data

        values = np.random.rand(23000)
        df = pd.DataFrame({'value': values})
        np.all(maxloc_faster(df).loc_max)

It gives me error 
that loc_max[loc_opt_ind] = 1
IndexError: too many indices for array 

Tags: 数据函数importdfdatanprandomloc
1条回答
网友
1楼 · 发布于 2024-04-23 10:11:45

数据帧是二维的。也就是说,df.values是二维的,甚至当它只有一列时。因此,loc_opt_ind将包含x和y索引(两个元组;只需打印loc_opt_ind即可查看),这不能用于索引loc_max。您可能希望使用df['values'].values(变成<Series>.values)或np.squeeze(df.values)作为输入。注意argrelextrema在这种情况下仍然返回一个元组,仅返回一个元素,因此您可能需要loc_opt_ind[0]np.where具有类似的行为)

相关问题 更多 >