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

如何生成指定位置为1其余为0的向量?Julia实现问题求助

解决方案

你的问题核心是索引类型导致的意外行为,以下是几种无需循环的解决办法:

原因分析

你提到生成了4维全1向量,大概率是把A定义成了元组(2,3,6,10)而非向量[2,3,6,10]。在Julia中,元组作为索引传入1维数组时,会被解析为多维索引,从而创建出不符合预期的多维数组。


方案1:修正原代码(最简)

确保A是向量类型,你的原代码就能正常工作:

# 正确定义A为向量
A = [2, 3, 6, 10]
# 创建长度为max(A)的零向量
B = zeros(Int, maximum(A))
# 给指定位置赋值为1
B[A] .= 1

执行后B就是预期的[0,1,1,0,0,1,0,0,0,1]。

方案2:使用列表推导式

通过推导式直接生成目标向量,语法直观:

A = [2, 3, 6, 10]
max_val = maximum(A)
B = [i ∈ A ? 1 : 0 for i in 1:max_val]

方案3:布尔向量转换(高效)

对于大规模数据,使用布尔向量更节省内存,之后可按需转为整数类型:

A = [2, 3, 6, 10]
# 创建全false的布尔向量
B = falses(maximum(A))
# 指定位置设为true
B[A] .= true
# 转换为Int类型(可选)
B = Int.(B)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:50:17