邻居稠密的发现点
我有一组(count = 485)范围在0.015到0.13之间的值,并且具有六位数的精度。
我想在python中使用numpy。
我尝试过
b = []
with open('data.txt') as infile:
lines = infile.readlines()
for line in lines:
for n in line.split()[2:3]:
b.append(n)
xa = np.asarray(b,dtype=float)
print 'mode-',stats.mode(xa)
此处data.txt在第三列中具有值。 这给出了多次出现的价值。 就我而言,0.06出现了两次。 因此,以上代码不适用于我的情况。
如果在'x'处有一个峰,是否可以用图来解释点x具有最密集的邻域。
我无法定义'neigbourhood'。您可以自己决定。
谢谢。
答案 0 :(得分:1)
您可以使用matplotlib.pyplot.hist
绘制直方图来显示峰。您也可以使用np.histogram()
来返回相同的结果。编辑:我现在在直方图频率结果上使用np.argmax()
来找到我们最大的窗口。还在直方图中绘制了一条线以显示最大频率。
您也可以检出numpy.genfromtxt()
或pandas.read_csv()
以便于打开文件。
import matplotlib.pyplot as plt
import numpy as np
#Synthetic Data
dat=np.random.uniform(0.015,0.13,485)#(count=485) of values in range 0.015 to 0.13
binsize=20 #number of windows you want
hist=plt.hist(dat,bins=binsize) #Plot and get our histogram values
#hist=np.histogram(dat,bins=binsize) #will also work, just not plot the answer.
#hist[0] is frequencies and hist[1] is x value
ans=hist[1][np.argmax(hist[0])]
print('Answer: '+str(ans))
buffer=(hist[1][2]-hist[1][1])/2 #Just to centre the black line
plt.axvline(ans+buffer,c='k') #Draw a line of centre
plt.show()