python - 需要 Numpy 花哨的索引建议

标签 python numpy indexing

首先,对于这个不太完美的描述性标题感到抱歉。

我有一个 (500, 500, 500) float 组“A”,和另一个 (500, 500, 500) 整数数组“Ind”。

我想形成第三个(500, 500, 500) ndarray“Anext”,其中“Anext”中索引为(x, y, z)的条目是A[B[x, y, z], y ,z]。

我研究过索引,但我发现很难想出一个有用的解决方案。我感谢任何帮助。

最佳答案

使用numpy.indices()创建轴1和轴2的索引数组,示例如下:

import numpy as np

a = np.random.rand(4, 4, 4)
ind = np.random.randint(0, 4, size=(4, 4, 4))

i0, i1, i2 = np.indices(a.shape)

b = a[ind, i1, i2]

检查结果:

for (i, j, k), v in np.ndenumerate(b):
    assert v == a[ind[i, j, k], j, k]

i0i1i2的形状为(4, 4, 4),保存一些内存,您还可以使用numpy.ix_():

i0, i1, i2 = np.ix_(*[np.arange(d) for d in a.shape])

其中 i1.shapei2.shape(1, 4, 1), (1, 1, 4)

关于python - 需要 Numpy 花哨的索引建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34937908/

相关文章:

python - 如何有效地计算 3d numpy 数组中的相邻元素

sql - 如果有代理键,需要单独的表吗?

python - 如何移动数据框的日期?

python - 如果 __hash__ 被覆盖,Pickle/dill 无法处理循环引用

python - 连接到上游时,Docker 中的 NGINX 和 Gunicorn 中的权限错误 : connect() to unix:/tmp/gunicorn. sock 失败(13:权限被拒绝)

python - 我如何在 python 中实现此功能?

python - 如何在给定特征集作为字典的情况下实现交叉验证和随机森林分类器?

python - 无需额外内存分配的乘积和总和

mysql - 为什么 MySql 不使用我们表上的索引?

python 更新游标问题 - %s 符号错误?