gpt4 book ai didi

python - 根据出现顺序在 Python 中对列表进行编码

转载 作者:行者123 更新时间:2023-11-28 21:32:09 24 4
gpt4 key购买 nike

我有一个这样的列表

['A'、'A'、'B'、'B'、'A+B'、'A+B'、'B'、'B'、'A']

我想将此列表转换为这样

[1, 1, 2, 2, 3, 3, 4, 4, 5]

我所做的是,我将从值 1 开始,当列表中的值发生变化时,我会将手中的值增加 1。

这是我现在使用的代码,

counts = []
count = 1

for i in range(1, len(p)):
print(p[i-1], p[i])
if p[i-1] == p[i]:
counts.append(count)
else:
counts.append(count)
count += 1

if p[-2] == p[-1]:
counts.append(counts[-1])
else:
counts.append(counts[-1] + 1)

如何在Python中有效地做到这一点?如果需要的话我也可以使用 numpy

最佳答案

这是使用 NumPy 实现此目的的简单方法:

import numpy as np

data = np.array(['A', 'A', 'B', 'B', 'A+B', 'A+B', 'B', 'B', 'A'])
result = np.concatenate([[1], 1 + np.cumsum(data[:-1] != data[1:])])
print(result)
# [1 1 2 2 3 3 4 4 5]

或者用 Pandas :

import pandas as pd

data = pd.Series(['A', 'A', 'B', 'B', 'A+B', 'A+B', 'B', 'B', 'A'])
result = data.ne(data.shift(1)).cumsum()
print(result)
# 0 1
# 1 1
# 2 2
# 3 2
# 4 3
# 5 3
# 6 4
# 7 4
# 8 5
# dtype: int32

关于python - 根据出现顺序在 Python 中对列表进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56937140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com