You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于现有向量生成连续相同元素对应有序整数的新向量

实现方案

MATLAB 实现(示例语法为MATLAB风格)

核心思路是用diff计算相邻元素的差值,识别分组变化位置后累加计数:

v1 = [13 13 13 13 5 5 5 2 2 5 5];
v2 = cumsum([1, diff(v1)~=0]);

运行后得到的v2和你预期的[1 1 1 1 2 2 2 3 3 4 4]完全一致。

Python 实现

基于Numpy(向量化操作,适合大向量)

import numpy as np
v1 = np.array([13,13,13,13,5,5,5,2,2,5,5])
v2 = np.cumsum(np.concatenate([[1], np.diff(v1) != 0]))

纯Python原生列表实现(无需依赖第三方库)

v1 = [13,13,13,13,5,5,5,2,2,5,5]
v2 = []
if v1:
    current_id = 1
    v2.append(current_id)
    for idx in range(1, len(v1)):
        if v1[idx] != v1[idx-1]:
            current_id += 1
        v2.append(current_id)

内容的提问来源于stack exchange,提问作者HappyPy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:06:03