计算列表中的连续数字

时间:2018-12-04 10:58:54

标签: python-3.x random contiguous

我对编程这个话题完全陌生,但是很感兴趣。 我正在python 3.x中进行编码,对我的最新主题有疑问:

我们有一个列表,其中包含数千个1到7之间的随机生成的整数。

import random

list_of_states = []
n = int(input('Enter number of elements:'))

for i in range(n):
    list_of_states.append(random.randint(1,7))

print (list_of_states)

然后,我要计算此列表中的连续数字并将其放入numpy.array

example: [1, 2, 3, 4, 4, 4, 7, 3, 1, 1, 1]

1    1
2    1
3    1
4    3
7    1
3    1
1    3 

我想知道是否有人对我如何做有一个提示/想法。 这部分是马尔可夫链的较小部分,因此我需要每个数字的频率。

感谢分享 纳丁

1 个答案:

答案 0 :(得分:0)

以下是执行此操作的粗略方法。我正在创建列表列表,然后将其转换为numpy数组。请仅将此作为指导,并即兴使用。

import numpy as np

num_list = [1,1,1,1,2,2,2,3,4,5,6,6,6,6,7,7,7,7,1,1,1,1,3,3,3]

temp_dict = {}

two_dim_list = []

for x in num_list:
    if x in temp_dict:
        temp_dict[x] += 1
    else:
        if temp_dict:
            for k,v in temp_dict.items():
                two_dim_list.append([k,v])
            temp_dict = {}
        temp_dict[x] = 1

for k,v in temp_dict.items():
    two_dim_list.append([k,v])

print ("List of List = %s" %(two_dim_list))

two_dim_arr = np.array(two_dim_list)

print ("2D Array = %s" %(two_dim_arr))

输出:

List of List = [[1, 4], [2, 3], [3, 1], [4, 1], [5, 1], [6, 4], [7, 4], [1, 4], [3, 3]]
2D Array = [[1 4]
 [2 3]
 [3 1]
 [4 1]
 [5 1]
 [6 4]
 [7 4]
 [1 4]
 [3 3]]