Я немного смущен ошибкой, с которой сталкиваюсь. Раньше у меня его не было, но в то же время мои данные были неправильными, поэтому мне пришлось переписать код.Как устранить ошибку индекса за пределами границ?
Запуск следующее:
plt.figure(figsize=(20,10))
x = np.arange(1416, 1426, 0.009766)
gaverage = np.empty((21,1024), dtype = np.float64)
calibdata = open(pathc + 'calib_5m.dat').readlines()
#print(np.size(calibdata)) ||| Yields: 624
#print(np.size(calibdata)//16) ||| Yields: 39
calib = np.empty(shape=(np.size(calibdata)//16,1024), dtype=np.float64)
for i in range(0, np.size(calibdata)//4):
calib[i] = calibdata[i*4+3].split()
caverage = np.average(calib[i] ,axis = 0)
Урожайность это:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-25-87f3f4739851> in <module>()
11 calib = np.empty(shape=(np.size(calibdata)//16,1024), dtype=np.float64)
12 for i in range(0, np.size(calibdata)//4):
---> 13 calib[i] = calibdata[i*4+3].split()
14 caverage = np.average(calib[i] ,axis = 0)
15
IndexError: index 39 is out of bounds for axis 0 with size 39
Теперь то, что я пытаюсь сделать здесь, в основном, принимают каждый 4-ю строку в файле чтения в calibdata и записать его новый массив, calib [i]. Если индексы такого же размера, как они выходят за рамки? Я думаю, что здесь есть какая-то принципиально некорректная логика, поэтому, если кто-нибудь может указать, где я отстаю, это было бы здорово.
, когда я это calibdata // 4 это 156 так я * 4 + 3 627, который будет читать дальше конца calibdata. –
поэтому я думаю, что вам нужно для i в диапазоне (0, np.size (calibdata) // 4 - 1) –