Как изменить массив для определенной целиPython

Программы на Python
Ответить
Anonymous
 Как изменить массив для определенной цели

Сообщение Anonymous »

Я работаю над массивом T и условием на основе массива D:

Код: Выделить всё

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
Я сделал это, используя этот (уродливый) код:

Код: Выделить всё

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
Можно ли использовать какую-нибудь векторизованную лямбда-функцию, чтобы сделать то же самое более элегантно, в возможной форме:

Код: Выделить всё

f = lambda *some expression I was not able to find*
NrT = np.apply_along_axis(f, axis=1, arr=T)
Я не привык использовать лямбда-функции. Возможно, есть более простой способ сделать это?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ic-purpose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»