python - 用 pandas 和 numpy Python 替换列表推导式

标签 python pandas list numpy slice

下面的函数使用切片来一次获取 2 个索引之间的最大值。因此它会获得 0 和 10 之间的最大值,然后是 10 和 12 等等。该函数源自这篇文章的答案post 。有没有一种方法可以用 pandas 函数(例如 pd.Series())的形式替换列表推导式。或者如果可能的话将其作为 numpy 函数。

list_ = np.array([9887.89, 9902.99, 9902.99, 9910.23, 9920.79, 9911.34, 9920.01, 9927.51, 9932.3, 9932.33, 9928.87, 9929.22, 9929.22, 9935.24, 9935.24, 9935.26, 9935.26, 9935.68, 9935.68, 9940.5])
indexes = np.array([0,10,12,14])
chunks = np.split(list_, indexes[1:-1])
MAX=([c.max() for c in chunks])

最佳答案

我推荐这个:

MAX = np.maximum.reduceat(list_,indexes[:-1])

输出:

array([9932.33, 9929.22, 9940.5 ])

另一种方法不会提高您的性能,而只是替代答案中的列表理解(事实上,甚至可能会稍微慢一些):

max = np.vectorize(np.max)
MAX = max(chunks)

关于python - 用 pandas 和 numpy Python 替换列表推导式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65946986/

相关文章:

python - 如何将 python 脚本通过管道传递给命令 (boost::program::options)

python - 从 matplotlib 时间序列图中删除日期

python - 使用 pandas python 重命名数据框列

python - Python 中的条件最近邻

javascript - Jquery递归函数将嵌套的li合二为一

python - 错误使用 "and"检查列表中的多个项目意味着什么?

python,import ssl 和 import _ssl 的区别

python - wx中如何同步两个网格的滚动条

java - 序列化-为什么readObject不能读取整个文件?

python迭代字典列表