首页 > 解决方案 > 基于排列替换 Numpy 数组中的值

问题描述

我有一个名为X (size:32000) 的大型 np 数组,其中填充了0, 1, 2, 3. 我想用以下数字的排列替换每个值(0、1、2、3):0, 1, 2, 3, 4, 5 例如, 0, 1, 2, 3可以替换为:

  1, 5, 3, 4
  5, 2, 4, 3
  0, 5, 1, 4

等等。(总共有360个这样的排列)

如何获取 360 个排列中的每一个并相应地替换X中的 32000 个值,以便最终每个排列都有 360 个X版本?

标签: pythonarraysnumpy

解决方案


你可以试试这个方法numpy.choose

import numpy as np
x = np.array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3,]) 
perm = [1, 5, 3, 4,]
x = np.choose(x, perm)

np.choose(x, perm) 将从 perm 中为 x 的每个值选择一个值,将 x 作为索引列表。我建议查看文档,因为此功能可能会导致混淆。


推荐阅读