Num Pythonic способ выполнения векторного вычитания, когда операнды имеют разную форму (a,n) - (b,n)Python

Программы на Python
Anonymous
Num Pythonic способ выполнения векторного вычитания, когда операнды имеют разную форму (a,n) - (b,n)

Сообщение Anonymous »

У меня есть два таких матричных операнда:

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

a = np.array([[1,2], [3,4], [5,6], [7,8]])
b = np.array([[9,10], [11,12], [13,14]])
Если мы отладим a и b, они будут выглядеть так:

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

[[1 2]
[3 4]
[5 6]
[7 8]]
(4, 2)
int32

[[ 9 10]
[11 12]
[13 14]]
(3, 2)
int32
С помощью этого способа я могу добиться того, чего хочу, где c — результат:

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

c = []
for i in range(b.shape[0]):
c.append(b[i] - a)
c = np.array(c)
Теперь c будет выглядеть так:

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

[[[ 8  8]
[ 6  6]
[ 4  4]
[ 2  2]]

[[10 10]
[ 8  8]
[ 6  6]
[ 4  4]]

[[12 12]
[10 10]
[ 8  8]
[ 6  6]]]
(3, 4, 2)
int32
Как вы видите, то, как я выполняю вычитание, все еще использовалось для цикла, существует ли numpythonic способ, с помощью которого я могу вычитать без использования цикла, чтобы я мог использовать оптимизацию numpy, следовательно, производительность будет быстрее, поскольку numpy использует язык C.

Подробнее здесь: https://stackoverflow.com/questions/781 ... -different

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