numpy - 在 numpy 中交换值和索引
问题描述
我想知道这是否可能,所以我有两个二维数组:
X[7][9] = 10
Y[7][9] = 5
根据以上信息,我想创建以下两个二维数组:
X'[5][10] = 9
Y'[5][10] = 7
有可能做到这一点吗?X 和 Y 的值是有界的,不会超过 X 和 Y 的形状。X 和 Y 的形状也相同。
提前致谢。
解决方案
您应该能够使用np.nditer
来跟踪多索引和数组的相应值。
rng = np.random.RandomState(0)
X = rng.randint(low=0, high=10, size=(10, 10))
Y = rng.randint(low=0, high=10, size=(10, 10))
X_prime = X.copy()
Y_prime = Y.copy()
it = np.nditer([X, Y], flags=['multi_index'])
for x, y in it:
i, j = it.multi_index
X_prime[y, x] = j
Y_prime[y, x] = i
我相信这是您期望的结果:
>>> X[7, 9], Y[7, 9]
(3, 9)
>>> X_prime[9, 3], Y_prime[9, 3]
(9, 7)
>>> X[1, 2], Y[1, 2]
(8, 2)
>>> X_prime[2, 8], Y_prime[2, 8]
(2, 1)
推荐阅读
- c# - 无需用户交互即可登录 Google 服务
- java - WebView 显示
- python - 将标准偏差添加到熊猫 groupby 对象的平均值
- c# - 如何在不将整个项目导入 bin 的情况下使用另一个项目的 Project.Properties?
- shell - 以空格分隔的读取 Shell 脚本选项
- spring-boot-test - 如何修复无法找到 meta.properties 的嵌入式 kafka 的错误
- javascript - 如何将带有图像和所有样式的 HTML 页面转换为 PDF 然后下载?
- python - 浏览文件并在不同文件中使用其路径
- c# - 尝试创建表并插入数据库
- r - 根据另一列值修改列值