Я хочу переназначить массив numpy в соответствии со словарем. Предположим, у меня есть массив numpy с N строками и 3 столбцами. Теперь я хочу переназначить значения в соответствии с его индексами, которые записаны в кортежах в словаре. Это прекрасно работает:Перемещение numpy arrariess в словарь
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 записей в каждом массиве, которые должны быть переназначены.
В python2 или python3? –
Значит, порядок, определенный в вашем словаре, произволен? Или вы всегда хотите отразить свои данные? Потому что были бы более эффективные способы без использования словаря, тогда ... (numpy.fliplr) – elzell
Спасибо, что согласен. Это Python 2.7. К сожалению, порядок случайный, а не зеркальный. – pallago