Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 从文本文件快速读取数据_Python 3.x_Bash_Numpy_Matplotlib - Fatal编程技术网

Python 3.x 从文本文件快速读取数据

Python 3.x 从文本文件快速读取数据,python-3.x,bash,numpy,matplotlib,Python 3.x,Bash,Numpy,Matplotlib,我有一个bash脚本,它调用python脚本。 我的python脚本从文本文件(主要是np.loadtxt(文件名))读取数据 文本文件包含12000行和48列浮点数字数据 打印时反复读取这些文件非常耗时。只是为了在下游处理中做一些小的改变,我不得不一遍又一遍地阅读这些文件。即使是标题上的小改动,我也需要阅读这些文件 是否有一种方法可以最大限度地减少这种数据读取。我可以使这些文件读取过程更快吗 下面是我的代码 #!/bin/bash ################# This script

我有一个bash脚本,它调用python脚本。 我的python脚本从文本文件(主要是np.loadtxt(文件名))读取数据 文本文件包含12000行和48列浮点数字数据

打印时反复读取这些文件非常耗时。只是为了在下游处理中做一些小的改变,我不得不一遍又一遍地阅读这些文件。即使是标题上的小改动,我也需要阅读这些文件

是否有一种方法可以最大限度地减少这种数据读取。我可以使这些文件读取过程更快吗

下面是我的代码

#!/bin/bash

################# This script should be run after production run of remd
export root=`pwd`
printf "Root dir $root\n"
psf=(pwat_heq.psf pu8_heq.psf u8t4_heq.psf)
pdb=(pwat_heq.pdb pu8_heq.pdb u8t4_heq.pdb)
ori=(pwat_ori.pdb pu8_ori.pdb u8t4_ori.pdb)
extract=(extract.psf extract.pdb) 
solu=("1leo_5fpps_pwat" "1leo_5fpps_u8" "1leo_5fpps_u8_t4")

###############################################################################
#                    change according to you simulation system                #
###############################################################################
select_system(){
    cd $root
    eqheatpdb=${pdb[$l]}        # VERY IMPORTANT
    eqheatpsf=${psf[$l]}
    oristr=${ori[$l]}
    extractpsf=${extract[0]}
    extractpdb=${extract[1]}
    # pddcd=${dcd[$l]}
    jobnum=2                  # VERY IMPORTANT CHANGE JOB-NUMBER
    cd ${solu[$l]}
    printf "\ncurrent working dir ${root}\n"
    printf "\ncurrent working system ${eqheatpdb} and ${eqheatpsf}\n\n"
}
dir_structure(){
    mkdir -p recen/{0..47}
    mkdir -p final_nativecontacts/{0..47}
    mkdir extract
    mkdir rmsd
    cp $root/${solu[2]}/anal/*.{py,inp,str} . 
}
call_python(){
    printf "contour python script running"
    python contour.py
}
Contour.py示例

import numpy as np
from mpl_toolkits.mplot3d import axes3d

txt="I need the caption to be present a little below X-axis"
paths=["1leo_5fpps_pwat", "1leo_5fpps_u8", "1leo_5fpps_u8_t4"]
temp = np.linspace(298,500,48).reshape(48,1)

f, ax = plt.subplots(3, sharex=True)
for i in range(3):
    filename1=open("{}/{}/anal/all_frac.dat".format(os.environ["root"], paths[i]))
    xf = np.loadtxt(filename1, dtype=float)

您可以在第一次读取Numpy数组后将其保存在二进制文件中,从二进制文件读取将快得多。要修改Contour.py,请执行以下操作:

for i in range(3):
    filename1=open("{}/{}/anal/all_frac.dat".format(os.environ["root"], paths[i]))
    filename1_npy_cache = filename1 + ".npy"
    if Path(filename1_npy_cache).is_file():
        xf = np.load(filename1_npy_cache)
    else:
        xf = np.loadtxt(filename1, dtype=float)
        np.save(filename1_npy_cache, xf)  # delete the file if content changes
请参阅此处的更多信息:


我想最好的办法是将更多的功能转移到python端。在python脚本中,您当然可以随时打开数据……我看不出您在哪里调用
python contour.py
。调用在未使用的(!)函数中
call\u python
。我还可以使用os.path.isfile(filename1)吗。使用Pathlib有什么好处吗?因为我必须导入它≥ 3.6,但对于这个简单的目的,os.path.isfile也绝对可以。