Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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 大型CSV文件处理_Python_Python 3.x_Shell_Audio - Fatal编程技术网

Python 大型CSV文件处理

Python 大型CSV文件处理,python,python-3.x,shell,audio,Python,Python 3.x,Shell,Audio,这可能是一个重复的问题。我找了很多,但没有找到答案 我正在进行音频分析,其中一个主音频文件需要分解为多个音频文件块,每个音频文件块应该包含一个句子 当我用3秒钟的音频时,我正在做的过程大约需要5分钟,但如果用更长的音频长度,则完成过程所需的时间会越来越长。例如,5分钟的音频大约需要14小时。 首先,我创建了一个csv文件,其中包含时间(以秒为单位)与振幅的关系,然后设置一个阈值,其中振幅小于我的值为0,振幅大于1的值为1。稍后,我检查连续0的数量是否大于另一个阈值j,然后计算该位置的时间。因此,

这可能是一个重复的问题。我找了很多,但没有找到答案

我正在进行音频分析,其中一个主音频文件需要分解为多个音频文件块,每个音频文件块应该包含一个句子

当我用3秒钟的音频时,我正在做的过程大约需要5分钟,但如果用更长的音频长度,则完成过程所需的时间会越来越长。例如,5分钟的音频大约需要14小时。 首先,我创建了一个csv文件,其中包含时间(以秒为单位)与振幅的关系,然后设置一个阈值,其中振幅小于我的值为0,振幅大于1的值为1。稍后,我检查连续0的数量是否大于另一个阈值j,然后计算该位置的时间。因此,我找到了句子结束的时间。 此过程花费的时间太长,因此任何其他方法都是有用的

我的数据集如下:

1.000000000000000000e+00,0.000000000000000000e+00,6.103515625000000000e+01
2.000000000000000000e+00,2.267999999999999969e-05,3.051757811999999959e+01
3.000000000000000000e+00,4.534999999999999779e-05,0.000000000000000000e+00
4.000000000000000000e+00,6.802999999999999748e-05,3.051757811999999959e+01
5.000000000000000000e+00,9.069999999999999558e-05,3.051757811999999959e+01
6.000000000000000000e+00,1.133800000000000020e-04,0.000000000000000000e+00
7.000000000000000000e+00,1.360500000000000001e-04,0.000000000000000000e+00
8.000000000000000000e+00,1.587299999999999931e-04,0.000000000000000000e+00
9.000000000000000000e+00,1.814100000000000131e-04,0.000000000000000000e+00
1.000000000000000000e+01,2.040800000000000112e-04,0.000000000000000000e+00
1.100000000000000000e+01,2.267600000000000041e-04,0.000000000000000000e+00
1.200000000000000000e+01,2.494299999999999751e-04,3.051757811999999959e+01
1.300000000000000000e+01,2.721099999999999951e-04,0.000000000000000000e+00
1.400000000000000000e+01,2.947800000000000203e-04,0.000000000000000000e+00
1.500000000000000000e+01,3.174599999999999861e-04,0.000000000000000000e+00
1.600000000000000000e+01,3.401400000000000061e-04,3.051757811999999959e+01
1.700000000000000000e+01,3.628099999999999771e-04,0.000000000000000000e+00
1.800000000000000000e+01,3.854899999999999972e-04,3.051757811999999959e+01
1.900000000000000000e+01,4.081600000000000224e-04,0.000000000000000000e+00
2.000000000000000000e+01,4.308399999999999882e-04,0.000000000000000000e+00
2.100000000000000000e+01,4.535100000000000134e-04,3.051757811999999959e+01
从CSV文件复制。行数为415449。我只给了你20英镑。我需要检查第一列是否在(1,2,3,…,n)中。当序列中断时,我需要在序列的最后一个编号处取第2列的值。希望我能解决我的问题


请注意:我需要在shell、Python、C、C++中编写硬代码。

< p>现在我有点理解了,用AWK来理解:

awk -v n=6 '            # n as parameter
BEGIN { 
    FS=","              # comma as the field separator
} 
int($1)==$1 && $1<=n {  # if $1 is an integer less than or equal to n
    val=$2              # value of column 2 at the last number of series
}
END {
    print val           # output the value
}' file
1.133800000000000020e-04
awk-vn=6'#n作为参数
开始{
FS=“,”#逗号作为字段分隔符
} 

int($1)=$1&&$1请解释为什么投反对票?我没有投反对票,但我在这里看不到问题,也不理解您的要求。你可能想重写这个问题,或者发布一些带有预期输出的示例数据(标题所指的csv)。我询问了可能的解决方案,并提到了我的过程。这真的需要样本数据吗?它有4600000条生产线csv@JamesBrown如果您能提供您的邮件,我可以在那里发送数据和代码,并在那里进行解释,这将是非常有帮助的。我很确定他不希望数据是这样的:)您确定的瓶颈是什么?CPU、RAM、HDD读/写?谢谢@James,我需要稍微改变一下。如果需要,我会寻求帮助。关于信息,我在“视频监控”中工作。要求越准确,代码越好。假设,我将逐行检查第3列,如果第3列的值小于“I”,则“j”将增加1。当“j”的值大于值“k”时,它将打印第1列的值。
$ awk -v i=1 -v j=0 -v k=3 '
BEGIN {
    FS=","
}
$3<i {        # if the value of 3rd column is less than "i" 
    j++       # then "j" will increment by 1
}
j>k {         # when the value of "j" is greater than a value "k" 
    print $1  # It will print the column 1 value
    # exit    # uncomment this if it only needs to print one value
}' file
8.000000000000000000e+00
9.000000000000000000e+00
1.000000000000000000e+01
1.100000000000000000e+01
1.200000000000000000e+01
...