|
本帖最后由 乐平 于 2022-9-11 18:31 编辑
看了你的脚本,速度慢大概率是因为你用了 for 循环来筛选数据,然后将数据一个一个 append 到新的列表里。这样效率当然会下降。
Numpy 数组(不是 python 的 list)不需要用 for 循环筛选数据。Numpy 有高效地筛选数据的切片方法。
- data = data[(data[:,3]>-0.05) & (data[:,3] < 0.05)]
- X = data[:,3]
- Y = data[:,4]
复制代码
看了 Sob 老师的视频 用Multiwfn+Origin绘制RDG(NCI)方法的散点图_哔哩哔哩_bilibili ,发现应该是用最后两列的数据作图。你的代码里应该是写错了,我说怎么运行之后打印了一堆数据……
Line #1774986 (got 6 columns instead of 4)
Line #1774987 (got 6 columns instead of 4)
Line #1774988 (got 6 columns instead of 4)
Line #1774989 (got 6 columns instead of 4)
Line #1774990 (got 6 columns instead of 4)
Line #1774991 (got 6 columns instead of 4)
Line #1774992 (got 6 columns instead of 4)
Line #1774993 (got 6 columns instead of 4)
Line #1774994 (got 6 columns instead of 4)
Line #1774995 (got 6 columns instead of 4)
Line #1774996 (got 6 columns instead of 4)
Line #1774997 (got 6 columns instead of 4)
Line #1774998 (got 6 columns instead of 4)
Line #1774999 (got 6 columns instead of 4)
Line #1775000 (got 6 columns instead of 4)
我优化了脚本,目前处理数据的速度提升了。对于 Multiwfn/examples/2-pyridoxine_2-aminopyridine.wfn 文件,使用 Multiwfn 20 --> 1 --> 3 (High quality grid, covering whole system, about 1728000 points in total)得到数据,总共 1775000 行 5 列数据,118 MB。用 Numpy 切片方法处理数据在我四年前买的笔记本上(第八代 Intel CPU)只需要 8.5 秒左右。
加上了彩色,绘图结果如下:
Python 代码如下:
plot_RDG.py
(1.5 KB, 下载次数 Times of downloads: 3)
用法:在命令行输入 python plot_RDG.py -h ,会显示使用方法。
- >>> python plot_RDG.py -h
复制代码
其中 -h 表示帮助, -i 表示输入的限位符。用户可以在此限位符后输入文件的路径和文件名。如果文件名在当前路径,则可以忽略路径,直接输入文件名。
输入路径和文件名后,Python 程序会使用 Numpy 切片而不是 for 循环来筛选数据。此过程对于 1775000 行数据只需要 8.5 秒左右的时间。数据处理完后会在屏幕上打印时间。
然后,Python 会根据筛选后的数据绘图。
|
|