如何在线性变换后重新分配numpy指数

时间:2016-01-02 11:20:11

标签: python numpy

假设我已将numpy数组的所有索引旋转了一个角度(矩阵多旋转矩阵)。

这些旋转的索引是尺寸张量(width_img * height_img,2)(假设宽度=这种情况下的高度),其中img是numpy数组。

有没有办法使用这些索引来旋转图像?就像在重新签署一些方法一样?

我尝试使用与r, c输出相同的格式重新整形到np.indices形式,但是它们以错误的顺序出现任何建议?

import numpy as np
img = np.random.randn(2,2)
# Altered position of original indicies in img
indices = np.array([[1,1],[0,1],[0,0],[1,1]])
r, c = indices.reshape(2,2,2)
img2 = np.zeros((2,2))
img2 += img[r,c]

1 个答案:

答案 0 :(得分:2)

不确定这会反映您的需求,但请遵循此答案 increment-given-indices-in-a-matrix,你应该考虑使用ravel:

import numpy as np

m = np.array([0,1,2,3]).reshape(2,2)
indices_r90 = np.array([[0,1], [0,0], [1,1], [1,0]])
indices_r90_t = indices_r90.T

ravel_ind = indices_r90_t[0] + indices_r90_t[1]*m.shape[0]
print m.ravel()[ravel_ind].reshape(2,2)

>>> [[2 0]
>>> [3 1]]