在文本fi的列中查找局部最大值

2024-06-28 19:35:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Tags: 代码intxtfordata错误line局部
2条回答

您可以从scipy.signal使用^{}。它返回数组中的索引。你知道吗

另外,要从文件加载数据,可以使用^{}。它返回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. ]]

Related topic

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)

相关问题 更多 >