python - 基于排列替换 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版本?
解决方案
你可以试试这个方法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 作为索引列表。我建议查看文档,因为此功能可能会导致混淆。
推荐阅读
- java - Java 编译器插件可以更改已编译程序的 AST。这是黑客攻击还是官方支持?
- matplotlib - 向 matplotlib 图表添加更多小数?
- python - 我们如何在仍然使用 `class` 关键字的同时覆盖构造函数?
- python-3.x - Selenium 没有通过 xpath、id、class 等找到元素。尝试显式等待
- python - 使用正则表达式从字符串中删除字符
- amazon-s3 - 如何下载 S3-Bucket,即时压缩并重新上传到另一个 s3 存储桶而不在本地下载?
- javascript - 角度:$ 未定义
- c# - 如何更好地将 char 转换为 int 保持数字值而不是 ASCII 值?
- c++ - 所需的最少驾驶室(算法)
- arduino - 检查 lcd.begin() 是否被调用