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

Julia 1.9.0中构造任意维度特定规则多维数组H的方法

任意维度张量的通用生成代码(Julia 1.9.0)

你可以通过动态生成每个维度的切片范围实现任意维度的通用逻辑,利用Julia的元组展开特性,无需针对不同维度写分支判断。

通用实现代码

function create_indicator_tensor(tensor_size, jdx::CartesianIndex)
    H = zeros(tensor_size)
    # 将CartesianIndex转为元组,为每个维度生成j:end的切片范围后展开为索引
    H[(j:end for j in Tuple(jdx))...] .= 1
    return H
end

测试示例

2维情况(与你的示例一致)

tensor_size = (4,4)
jdx = CartesianIndex(3,2)
result = create_indicator_tensor(tensor_size, jdx)
# 输出:
# 4×4 Matrix{Float64}:
# 0.0  0.0  0.0  0.0
# 0.0  0.0  0.0  0.0
# 0.0  1.0  1.0  1.0
# 0.0  1.0  1.0  1.0

3维情况测试

tensor_size_3d = (3,3,3)
jdx_3d = CartesianIndex(2,1,3)
result_3d = create_indicator_tensor(tensor_size_3d, jdx_3d)
# 所有满足i1≥2、i2≥1、i3≥3的位置为1
# 例如 result_3d[2,1,3] = 1,result_3d[3,3,3] = 1

代码说明

  • Tuple(jdx)将CartesianIndex转换为对应维度的索引元组,比如CartesianIndex(3,2)转为(3,2)
  • 生成器(j:end for j in Tuple(jdx))为每个维度创建从j到末尾的切片范围,2维时生成(3:end, 2:end)
  • ...是Julia的元组展开运算符,把生成的切片范围序列展开为数组的索引参数,等价于手动写H[3:end,2:end]这类代码,天然适配任意维度

内容的提问来源于stack exchange,提问作者Sakurai.JJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:42:39