繁体   English   中英

在文本文件的一列中找到局部最大值

[英]find local maximum in a column of a text file [closed]

我有一个包含两行的文本文件。 我想找到第一行的局部最大值。 我正在尝试下面的代码,但我不知道为什么会收到此错误:“ x必须是一维数组”

f= open ('ttt.txt', 'r')
data = f.readlines()
for line in data:
    c=line.split(' ')[0]
    d=float (c)
    a= np.array (d)
peaks, _ = find_peaks(a, height=0)

输入是这样的:

0 5 
1 5
2 5
3 6
1 6
0 7
0 6
0.01 5
0.4 5
0.001 5
0.3 6
0.7 6
1.5 7
4 6
2 5
0.1 6
0 6

输出应为:

3 6
0.4 5
4 6

a应该是列表,但是,您未在创建列表。

f = open ('ttt.txt', 'r')
data = f.readlines()
a = [float(line.split()[0]) for line in data]
a = np.array(a)
peaks, _ = find_peaks(a, height=0)

您可以使用argrelextremascipy.signal 它返回数组中的索引。

另外,要从文件加载数据,可以使用numpy.loadtxt 它以numpy数组返回数据(可以使用)。

这里的代码:

# Import modules
import numpy as np 
from scipy.signal import argrelextrema

# Load the data from text file
data = np.loadtxt('ttt.txt')

# Get local maxima from the first column
index = argrelextrema(data[:, 0], np.greater)

print(index)
# (array([ 3,  8, 13], dtype=int64),)
print(data[index])
# [[3.  6. ]
#  [0.4 5. ]
#  [4.  6. ]]

相关主题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM