我有两个列表a和b,长度N相等,值在[0,1]之间。我要检查索引相同的两个列表中的每一对(a[0]与b[0],a[1]与b[1]等等),并根据它们的值,测量属于以下状态之一的成对的次数。在
列表中的每个元素都可以处于以下状态之一:
1)[0]
2)(0,0.1]
3)(0.1,0.2]
。。。。。在
11)(0.9,1)
12)[1]
我的问题是a或b的每一个元素都可以处于这12个状态中的一个,所以它们对有可能处于12*12=144个终态之一。在
配对状态<;-状态a和状态b
最终状态1<;-状态1和状态1
最终状态2<;-状态1和状态2
最终状态3<;-状态1和状态3
。。。。在
最终状态144<;-状态12和状态12
如果我只有一个列表,这个问题可以用一个简单的for循环和If/else语句来解决。我压缩了两个列表,但是组合太多,无法继续。在
有什么想法吗?在
举个例子,如果我有:
a=[0,0.1,0.25,0.1]
b=[1,0.1,0.4,0.05]
有144个定义了可能的状态对,所以从上面的4个中我们得到了
状态1和状态12=1(来自a[0]-b[0])
状态2&State 2=2(来自a[1]-b[1]和a[3]-b[3])
状态4和状态5=1(来自a[2]-b[2])
对于numpy版本,类似的机器没有显式循环。在
输出相同
如果我没搞错,给定你的两个列表,你需要找出有多少“对”包含同一时间间隔内的项目。在
这里有一个小技巧你可以使用: 乘以10,然后使用
int()
去掉小数部分。在如果零本身就是一个状态,那么您需要调整我上面发布的内容来解释这个问题,因为}给出了完全相同的结果。在
int(0*10)
和{以下是对这个问题的编辑:如果你有一个状态的“矩阵”,那么实际上可能有一个简单的方法来解决这个问题。在
^{pr2}$这将创建一个12*12的表,并且对于每对表,都会增加它所属的“单元”。从这里,您需要提取对的数量,并在它们前面加上适当的“statex+statey”标签。在
最后注意:如果要将结果输出到控制台,则可能需要使用
pprint
模块。在相关问题 更多 >
编程相关推荐