Преобразование бесчисленных массивов в словарь

Я хочу переназначить массив в соответствии со словарем. Предположим, у меня есть массив с N строками и 3 столбцами. Теперь я хочу переназначить значения в соответствии с их индексами, которые записаны в кортежах в словаре. Это отлично работает:

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 ответ

Для простоты я бы просто использовал [::-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]]
Другие вопросы по тегам