将numpy arrarys重新映射到字典

时间:2015-12-01 16:39:20

标签: numpy dictionary reshape remap

我想根据字典重新映射一个numpy数组。 我们假设我有一个N行和3列的numpy数组。现在我想根据其在字典中的元组中编写的索引重新映射值。 这很好用:

import numpy as np

a = np.arange(6).reshape(2,3)
b = np.zeros(6).reshape(2,3)
print a
print A

dictt = { (0,0):(0,2), (0,1):(0,1), (0,2):(0,0), (1,0):(1,2), (1,1):(1,1), (1,2):(1,0) }

for key in dictt:
    b[key] = a[dictt[key]]

print b
a = [[0 1 2]
    [3 4 5]]

b = [[ 2.  1.  0.]
    [ 5.  4.  3.]]

我们假设我有N行,其中N是偶数。现在我想将相同的映射(对于上面示例中的那两行有效)应用于所有其他行。 因此我希望有一个来自:

的数组
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]

为:

b = [[ 2.  1.  0.]
    [ 5.  4.  3.]]
    [[ 8.  7.  6.]
    [ 11.  10.  9.]]

有什么想法吗?我想快速完成,因为这些是每个阵列中的192000个条目,应该重新映射。

1 个答案:

答案 0 :(得分:0)

为简单起见,我只想使用[:: - 1]。

a = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
b = [item[::-1] for item in a]
>>> b
[[2, 1, 0], [5, 4, 3], [8, 7, 6]]