python—将numpy数组的索引Map到展平向量中相应索引的公式?

k97glaaz  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(332)

如标题所示,将numpy数组的索引Map到展平向量中相应索引的公式是什么?
作为一个具体例子:

np.random.seed(2021)
X = np.random.normal(size=(5,4,3))
x = X.flatten(order='C')
ix = (1,2,2)

计算指数的公式是什么 i 以致 x[i] 返回与相同的值 X[ix] ? 理想情况下,同样的公式也适用于高阶Tensor。

gywdnpxw

gywdnpxw1#

您可以创建一个函数,该函数基于中的每个项重新调整部分索引 ix ,并将其相加

def calculate_index(x, i):
    return x[0].size * i

np.random.seed(2021)
X = np.random.normal(size=(5, 4, 3))
x = X.flatten(order='C')
ix = (1, 2, 2)

print(X[ix])

# -0.720158835135297

print(x[calculate_index(X, ix[0]) + calculate_index(X, ix[1]) + calculate_index(X, ix[2])])

# -0.720158835135297

ix = (3, 3, 0)
print(X[ix])

# 1.2242357215843627

print(x[calculate_index(X, ix[0]) + calculate_index(X[0], ix[1]) + ix[2]])

# 1.2242357215843627

相关问题