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

基于变化索引利用NumPy生成交替值的二进制数组

基于变化索引利用NumPy生成交替值的二进制数组

当然有NumPy的“魔法操作”能搞定这个需求!我给你一步步拆解怎么实现:

首先,咱们先抓准需求核心:从初始值0开始,在给定的索引数组a上交替切换0和1,最终生成对应的二进制数组。

直接上实操代码,拿你给的例子a = np.array([2,5,9,10])来演示:

import numpy as np

a = np.array([2, 5, 9, 10])
# 确定目标数组的长度:最后一个索引 + 1(因为数组索引从0开始)
b_length = a[-1] + 1
# 创建初始全0数组
b = np.zeros(b_length, dtype=int)
# 在需要切换值的索引位置打上标记
b[a] = 1
# 累积求和后取模2,自动生成交替的0和1
b = b.cumsum() % 2

print(b)
# 输出结果刚好是你要的:[0 0 1 1 1 0 0 0 0 1 0]

原理其实特别直观:

  • 先在所有需要切换值的索引位置设为1,相当于给“切换点”打标记
  • 对标记数组做累积求和,每遇到一个标记,累积值就加1,这样就能记录当前是第几次切换
  • 最后对2取模,就把累积值转换成了0和1交替的结果,完美匹配预期效果

哪怕遇到特殊情况,比如a是空数组(那结果就是全0数组),或者从索引0就开始切换,这个方法也能稳稳兼容,完全不用额外调整逻辑。

备注:内容来源于stack exchange,提问作者Paul Jurczak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 16:44:49