Подобный вопрос уже задавался по этому вопросу: Построение гистограмм профиля в python .Но, тем не менее, по какой-то причине мне это не сработает.
Давайте посмотрим на мой код
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import scipy
file = open('cesium.txt','r')
count = 0
energy_channel = []
intensity_counts = []
for line in file.readlines():
count += 1
if count >= 10:
row = line.split()
int_1 = int(row[0])
int_2 = int(row[-1])
energy_channel.append(int_1)
intensity_counts.append(int_2)
if count == 2700: break
plt.plot(energy_channel, intensity_counts, 'k.')
plt.xlabel('Energy (keV)')
plt.ylabel('Counts')
plt.xticks([0, 400, 800, 1200, 1600, 2000, 2400],
[0, 110, 220, 330, 440, 550, 662])
plt.show()
plt.clf()
Это построит так называемый гамма-спектр для радиоактивного излучения.изотоп Cs-137 (для тех, кто интересуется).Теперь я хотел бы сделать гистограмму профиля из этого спектра.Поскольку у меня есть все точки, сохраненные в двух (x- и y-) векторах energy_channel и интенсивности_counts, соответственно, я подумал, что что-то вроде этого может работать:
scipy.stats.binned_statistic(energy_channel,intensity_counts)
Но это просто дает мне сообщение об ошибке:
FutureWarning:
Using a non-tuple sequence for multidimensional indexing is deprecated;
use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be
interpreted as an array index, `arr[np.array(seq)]`, which will result
either in an error or a different result.
Надеюсь, я ясно понял мой вопрос здесь.Я хотел бы создать гистограмму профиля, как в теме, на которую я поместил ссылку, но она, кажется, не работает так, как я думаю, и не могу понять.
Редактировать: Iпопытался превратить списки в tuple-list с помощью функции zip (), а затем передать его функции binned_statistics (), но появляется то же сообщение об ошибке.Я также пытался составить списки в последовательности, но, похоже, это тоже не сработало.