найти плотность точек вдоль линии, чтобы найти область с максимальной концентрацией - PullRequest
0 голосов
/ 24 марта 2019

Нахождение точки с плотной окрестностью

У меня есть набор (count = 485) значений в диапазоне от 0,015 до 0,13 с точностью до шести цифр.

Я хочу использовать numpy в python.

Я пытался

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' имеется пик.

Я не могу определить «соседство». Вы можете решить сами.

Спасибо.

1 Ответ

1 голос
/ 24 марта 2019

вы можете использовать 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...