将 numpy 数组的索引映射到展平向量中相应索引的公式?

Formula that maps the index of a numpy array to the corresponding index in the flattened vector?

如题所示,将numpy数组的索引映射到展平向量中的相应索引的公式是什么?

举个具体的例子:

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

计算索引 i 使得 x[i] returns 与 X[ix] 的值相同的公式是什么?理想情况下,同样的公式也适用于高阶张量。

您可以创建一个函数,根据 X 中值的相对位置重新调整部分索引购买将数组和行数乘以 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')
x[calculate_index(X, ix[0]) + calculate_index(X[0], ix[1]) + ix[2]]

X, ix[0] 将根据列表数 (5) 给出相对索引。

X[0], ix[1]) 将根据列表 (4) 中的行数给出相对索引。

ix[2] 将给出该行的相对索引。

ix = (1, 2, 2)
print(X[ix])
# -0.720158835135297
print(x[calculate_index(X, ix[0]) + calculate_index(X[0], ix[1]) + 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