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

如何用索引数组与候选数组构造新数组?Julia中np.choose的等效方法

Julia 中类似 NumPy np.choose 的等效实现

一维场景的最简实现

在 Julia 中,直接利用数组的向量化索引就能实现和 np.choose 完全一致的效果,无需手动遍历索引数组,这也是性能最优的方式:

idx_arr = [1, 2, 3, 2, 4]
choices = [0, 10, 20, 30]
new_arr = choices[idx_arr]  # 结果: [0, 10, 20, 10, 30]

这里的索引操作是 Julia 原生支持的向量化操作,底层会以高效的方式执行,性能远优于手动列表推导式循环。

多维/多候选数组场景的扩展实现

如果你的需求和 np.choose 的高级用法一致(比如候选是多个同维度数组,需要按索引选择对应位置的元素),可以通过数组堆叠结合索引来实现:

假设我们有两个候选数组,需要根据索引数组选择对应位置的元素:

# 模拟 np.choose 的多候选场景:选择第1或第2个数组的对应元素
idx_arr = [1, 2, 1, 2, 1]
choice1 = [0, 1, 2, 3, 4]
choice2 = [10, 11, 12, 13, 14]

# 将候选数组合并为二维数组,再按索引选择列
combined = hcat(choice1, choice2)
new_arr = combined[CartesianIndices(choice1), idx_arr]  # 结果: [0, 11, 2, 13, 4]

或者更简洁的写法,利用 stack 函数:

combined = stack([choice1, choice2], dims=2)
new_arr = combined[:, idx_arr]  # 结果同上

总结

  • 一维场景下,直接使用 choices[idx_arr] 就是最简洁高效的替代方案,完全等价于 np.choose 的基础用法。
  • 复杂多候选场景,通过堆叠候选数组再进行向量化索引,就能实现和 np.choose 一致的功能。

内容的提问来源于stack exchange,提问作者rosa b.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:57:09