Как объединить значения в списке в категории - PullRequest
0 голосов
/ 19 марта 2020

Например, двойные значения в первом массиве [1.2,4.6,3.7,11.2,13,5,18.9,0.3,20.0,26.7,1] теперь я хочу создать другой массив на основе первого с состояниями 1, 2 и 3 для каждого значения в первом массиве, который находится в диапазоне [0,10) добавьте значение 1 во второй массив, чтобы диапазон [0,10) представлял состояние 1, диапазон [10,20) представлял состояние 2, диапазон [20,30) представлял состояние 3

, поэтому в конце второй массив будет выглядеть следующим образом [1,1,1,2,2,2,1,3,3,1] Это массив переходных состояний, который поможет построить матрицу переходов в python **

.

Ответы [ 2 ]

2 голосов
/ 19 марта 2020

Если numpy является опцией, это довольно просто с np.digitize:

import numpy as np
a = np.array([1.2,4.6,3.7,11.2,13,5,18.9,0.3,20.0,26.7,1])

np.digitize(a, (0,10,20))
# array([1, 1, 1, 2, 2, 1, 2, 1, 3, 3, 1], dtype=int64)
0 голосов
/ 19 марта 2020

Если вы не хотите использовать numpy ( см. Решение yatu ) или хотите явно увидеть реализацию basi c pure Python, проверьте следующее:

arr = [1.2,4.6,3.7,11.2,13,5,18.9,0.3,20.0,26.7,1]

def get_state(el):
 if 0 <= el < 10:
     return 1
 elif 10 <= el < 20:
     return 2
 elif 20 <= el < 30:
     return 3
 else:
     raise Exception(f"Unexpected value: {el}")

res = [get_state(el) for el in arr]
# [1, 1, 1, 2, 2, 1, 2, 1, 3, 3, 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...