У меня есть три набора np.arrays. Два - это мой набор данных (U и t), а третий - номер каждой точки данных (iarray). Я пытаюсь создать три новых массива: один содержит значения (U) в течение определенного интервала. Вторая содержит значения (t), приписанные значениям (U). Третий содержит количество этих значений в исходном массиве (они должны быть одинаковыми как для U, так и для t).
Я получаю два массива разного размера для новых U и t, и мой массив целых чисел содержиттолько одно значение.
Все должны иметь одинаковый размер.
Я попытался установить серию циклов for, которая проверяет, чтобы значение U находилось в определенном интервале. Затем проверьте, будет ли значение в t близко к последней точке, добавленной в новый t-массив. Если все хорошо, следует добавить значения с теми же целыми числами в исходных массивах в те же позиции в новых массивах.
Массивы с данными и массивом чисел
t = a[:,0]
U = a[:,1]
iarray=np.array(range(len(t)))
Ядрокод
tpeak = np. array([])
Upeak = np. array([])
b=np.array([])
for i in range(len(t)):
if (np.size(b)==0) and 0.9<U[i]and U[i]<4 :
tpeak=np.append(tpeak,t[i])
for i in range(len(t)):
if (np.size(b)==0) and 0.9<U[i]and U[i]<4 :
Upeak=np.append(Upeak,U[i])
for i in range(len(t)):
if (np.size(b)==0) and 0.9<U[i]and U[i]<4 :
b=np.append(b,iarray[i])
for i in range(len(t)):
if U[i]>1 and U[i]<4 and 0.8<tpeak[-1]-t[i] :
tpeak=np.append(tpeak,t[i])
for i in range(len(t)):
if U[i]>1 and U[i]<4 and 0.8<tpeak[-1]-t[i] :
Upeak=np.append(Upeak,U[i])
for i in range(len(t)):
if U[i]>1 and U[i]<4 and 0.8<tpeak[-1]-t[i] :
b=np.append(b,iarray[i])
Как уже упоминалось, я ожидаю, что на выходе будут три массива (Upeak, tpeak и b) одинакового размера, но пик U на 1 меньше, чем tpeak, а ipeak содержит только одно значение.