import numpy as np
T = np.array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8]])
D = np.array([-6, 1, 5, -8])
Что я хочу сделать для каждой строки T:
если D [ 2, -1] как D[0]0 заменить первым значение противоположно второму значению, а второе значение — первому значению, например [ 3, 4] -> [-4, 3] как D[1]>0
Я работаю над массивом T и условием на основе массива D: [code]import numpy as np T = np.array([[ 1, 2], [ 3, 4], [ 5, 6], [ 7, 8]]) D = np.array([-6, 1, 5, -8]) [/code] Что я хочу сделать для каждой строки T: [list] [*]если D [ 2, -1] как D[0]0 заменить первым значение противоположно второму значению, а второе значение — первому значению, например [ 3, 4] -> [-4, 3] как D[1]>0
[/list] Я сделал это, используя этот (уродливый) код: [code]import numpy as np T = np.array([[ 1, 2], [ 3, 4], [ 5, 6], [ 7, 8]]) D = np.array([-6, 1, 5, -8]) n = len(T) NrT = T.copy() for idx in range(n): if D[idx] > 0: NrT[idx,0] = -T[idx,1] NrT[idx,1] = +T[idx,0] else: NrT[idx,0] = +T[idx,1] NrT[idx,1] = -T[idx,0] NrT [/code] Можно ли использовать какую-нибудь векторизованную лямбда-функцию, чтобы сделать то же самое более элегантно, в возможной форме: [code]f = lambda *some expression I was not able to find* NrT = np.apply_along_axis(f, axis=1, arr=T) [/code] Я не привык использовать лямбда-функции. Возможно, есть более простой способ сделать это?