python - 如何在计算差异之前包含列表的第一个元素
问题描述
我正在创建一个直方图。我目前有这段代码:
g = [479, 481, 503, 525, 554, 586, 614, 669, 683]
然后我为 x 和 y 轴写了这个:
x =[28, 27, 26, 25, 24, 23, 22, 21, 20]
y = diff(g)
这就是它计算 y 的方式:
array([ 2, 22, 22, 29, 32, 28, 55, 14])
但是,我意识到我的直方图在开始计算从那里开始的差异之前不包括 479(g 中的第一个元素),这是我希望做的。我想要的输出是
array([ 479, 2, 22, 22, 29, 32, 28, 55, 14])
有没有办法我可以做到这一点?我不想手动附加它,因为我需要为各种文件自动化它。
解决方案
将元素添加到diff有两种主要方式:事前或事后。如果你想在前面加上一个零,你可以使用从prepend
v1.16.0 开始可用的参数:
y = np.diff(g, prepend=0)
这相当于手动将零插入数组(如果您的 numpy 版本较旧):
y = np.diff(np.insert(g, 0, 0))
您可以在差异之后做一些非常相似的事情,方法是g[0]
在开头插入:
y = np.insert(np.diff(g), 0, g[0])
但是,此处显示的所有选项效率低下,因为它们会复制您的所有数据(g
或差异)。节省空间的解决方案将分配一个输出缓冲区,并手动计算差异:
y = np.empty_like(g)
y[1:] = g[1:] - g[:-1]
y[0] = g[0]
推荐阅读
- sublimetext3 - index.sublime-project and index.sublime-workspace files
- git - Gitbook force changing uppercase directories to lowercase in GitHub
- sas - How to prevent Proc report from printing a blank page when a variable flows over to the next page due to having too much text in it?
- python - 有什么方法可以在不使用命令行的情况下运行 python 文件?
- python - 从生成的数组列表python中查找丢失的时间
- docker - Using same docker image in multiple agents during parallel build
- python - How to save ipywidget output and link it to a button to run another function with saved inputs
- android - Android gradle 4.1.1 中的 koush/ion 崩溃
- python - 共享一个队列的独立python脚本
- python - 读取 .conf 文件 python ConfigParser