numpy сложение между различными размерными массивами - PullRequest
0 голосов
/ 26 марта 2020

Я использую следующий код:

import numpy as np

a = np.array([1, 2])
b = np.array([[1, 2]])
a = a + b

print(a)
[[2 , 4 ]]

Как видите. размерность a равна 1, а b равна 2.

Математически невозможно добавить между различными размерными массивами, как это может работать при numpy? и что это значит [[2, 4]]?

  • a.shape равно (2,)
  • b.shape равно (1, 2)
  • (a + b) .shape is (1, 2)

Однако следующий код выдает ошибку:

import numpy as np

a = np.array([1, 2])
b = np.array([[1, 2]])
a += b

Почему это не работает? Что дает другой результат?

1 Ответ

0 голосов
/ 26 марта 2020

Как уже указывалось в комментариях, всегда помогает проверить документацию ; цитата:

При работе с двумя массивами NumPy сравнивает их формы поэлементно. Он начинается с конечных размеров и продвигается вперед. Два измерения совместимы, когда

  1. они равны

  2. или одно из них равно 1

В вашем случае оба массива имеют измерение, состоящее из 1 элемента (1 столбец в A и 1 строка в B).

Из-за этого он добавляет их в способ, который не имеет смысла математически.

Если вы изменили это и имели массивы, которые имеют размерность, равную 1, то вы получите ошибку.

...