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

NumPy中数组索引的逆操作:从置换数组恢复原数组

恢复NumPy原数组的直接方法

已知经过ar_permuted = ar[indices]得到的ar_permuted和索引数组indices,最直接的恢复原数组ar的方式是构建indices的逆排列数组,再用这个逆数组索引ar_permuted。

具体实现代码

import numpy as np

# 已知的输入
ar_permuted = np.array([0, 1, 5, 3, 4, 2, -1, -1])
indices = np.array([5, 6, 1, 2, 0, 7, 3, 4])

# 构建逆索引数组:inv_indices[indices[i]] = i
inv_indices = np.empty_like(indices)
inv_indices[indices] = np.arange(len(indices))

# 恢复原数组
ar = ar_permuted[inv_indices]
print(ar)  # 输出: array([4, 5, 3, -1, -1, 0, 1, 2])

原理说明

原操作中,ar_permuted[i] = ar[indices[i]],意味着原数组ar的第indices[i]个元素对应ar_permuted的第i个元素。要恢复ar,我们需要找到每个原位置j对应的ar_permuted中的位置i——也就是满足indices[i] = j的i,这正是逆索引数组inv_indices的作用:inv_indices[j] = i。用这个逆数组索引ar_permuted,就能还原出原数组的每个位置元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:59:49