Numpy функция, которая округляет до целого числа до указанного диапазона - PullRequest
0 голосов
/ 19 сентября 2019

Допустим, у меня есть массив y, который содержит непрерывные числа, которые в основном идут от -1 до 5, возможно, с некоторыми выбросами, но я хочу зафиксировать их в указанных целых числах (0,1,2,3,4), задав им конкретныеточки, где заканчиваются диапазоны целых чисел т.е.[0.7,1.6,2.4,3.7] так что здесь 0 будет всем ниже 0,7, 1 будет всем между 0,7 и 1,6, 2 будет между 1,6 и 2,4 и т. Д. Мне интересно, есть ли функция в numpy, которая может сделать этодля меня более эффективно, чем код ниже.Я прочитал документы по numpy.fix и numpy.rint, но я не понимаю, как я могу сделать это с ними.

Вот пример того, что я хочу сделать в основном:

def flatten(y):
            for i in range(len(y)):
                if y[i] <0.7:
                    y[i] = 0
                elif y[i]>0.7 and y[i]<1.6:
                    y[i] = 1
                elif y[i]>1.6 and y[i]< 2.4:
                    y[i] = 2
                elif y[i] >2.4 and y[i]<3.7:
                    y[i] = 3
                elif y[i]> 3.7:
                    y[i] = 4
            return y

Не обязательно быть единственной функцией, но, по крайней мере, чем-то более эффективным, чем эта.

1 Ответ

1 голос
/ 19 сентября 2019

Вы можете использовать np.digitize:

 np.digitize(y, [0.7, 1.6, 2.4, 3.7])
...