python统计一个数值连续出现的次数
import randomou = "偶数"
ji = "奇数"
a = range(1,11)
x = 0
while x < 10:
list = random.sample(a,10)
print(list)
for y in list:
if y %2 == 0:
print(ou,end=",")
else :
print(ji,end=",")
print()#换行,如果不加这个的话就变成一长条了
x +=1
代码的结果如下
[6, 9, 8, 7, 4, 5, 3, 1, 10, 2]
偶数,奇数,偶数,奇数,偶数,奇数,奇数,奇数,偶数,偶数,
[6, 9, 4, 8, 2, 3, 10, 5, 7, 1]
偶数,奇数,偶数,偶数,偶数,奇数,偶数,奇数,奇数,奇数,
[6, 2, 3, 9, 7, 10, 4, 8, 5, 1]
偶数,偶数,奇数,奇数,奇数,偶数,偶数,偶数,奇数,奇数,
[8, 3, 1, 2, 9, 5, 4, 7, 6, 10]
偶数,奇数,奇数,偶数,奇数,奇数,偶数,奇数,偶数,偶数,
[8, 6, 4, 10, 9, 2, 5, 3, 7, 1]
偶数,偶数,偶数,偶数,奇数,偶数,奇数,奇数,奇数,奇数,
[2, 1, 4, 8, 9, 3, 10, 6, 7, 5]
偶数,奇数,偶数,偶数,奇数,奇数,偶数,偶数,奇数,奇数,
[2, 3, 10, 7, 1, 4, 6, 5, 9, 8]
偶数,奇数,偶数,奇数,奇数,偶数,偶数,奇数,奇数,偶数,
[3, 1, 10, 8, 6, 7, 2, 4, 9, 5]
奇数,奇数,偶数,偶数,偶数,奇数,偶数,偶数,奇数,奇数,
[5, 3, 4, 9, 6, 1, 2, 8, 10, 7]
奇数,奇数,偶数,奇数,偶数,奇数,偶数,偶数,偶数,奇数,
[1, 5, 4, 8, 6, 10, 2, 7, 9, 3]
奇数,奇数,偶数,偶数,偶数,偶数,偶数,奇数,奇数,奇数,
我想统计每个列表的第一位,比如说 第一个列表的第一位是偶数,第二个列表的第一位是偶数,那就记录为2,第三个列表的第一位是偶数,则记录为3,以此类推。只记录连续性出现的偶数,如果中间出现不是偶数,计数自动重新开始,该怎么写
回答:
用 numpy 吧,先把第一位的数值转换成 1 或 0, 1 代表需要统计。然后用累加、差值便可计算出连续出现的次数。
参考代码
import numpy as np# 矩阵 10x10,元素随机范围 [1, 11)
data = np.random.randint(1, 11, (10, 10))
print(data)
# 对第一列取模(2),偶数成0,奇数成1
column0 = np.mod(data[:, 0], 2)
# 反转,偶数成1,奇数成0
mask = np.bitwise_xor(column0, 1)
# 开始和末尾各添加一个 0,作统计
mask0 = np.insert(mask, [0, len(mask)], 0)
# 累加
sum0 = np.cumsum(mask0)
# 取奇数位置对应的累加值
sum1 = sum0[mask0 == 0]
# 去重
sum2 = np.unique(sum1)
# 通过差值,反算连续个数
result = np.diff(sum2)
print('result:', result)
结果
[[ 6 7 10 8 7 2 8 7 8 2] [ 4 7 7 9 1 9 6 8 6 6]
[ 4 4 9 7 6 2 5 7 10 7]
[ 9 9 6 1 10 2 9 9 7 1]
[ 7 1 6 10 9 1 7 7 8 4]
[ 1 9 1 6 1 7 10 1 8 7]
[ 6 4 2 3 7 6 2 1 9 1]
[ 4 7 7 2 9 5 9 3 9 1]
[ 3 1 4 5 1 6 4 5 8 9]
[ 4 4 3 10 10 3 5 10 3 7]]
result: [3 2 1]
以上是 python统计一个数值连续出现的次数 的全部内容, 来源链接: utcz.com/a/164270.html