例如,第一个数组[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中建立过渡矩阵**
如果使用numpy,则使用np.digitize
非常简单:
np.digitize
如果您不想使用numpy(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)
)或想显式地看到基本的纯Python实现,请查看以下内容:
see yatu's solution