РЕДАКТИРОВАТЬ: Мой предыдущий ответ был неверным!
Когда у вас есть массивы выше, чем степень 2, «пунктирные» вместе, используя np.dot
, вы должны указать, какие оси вы умножаете и суммируетеover.
В этом примере [2,3,2,1,2,2]
является ссылкой на то, какие оси выбраны в a
& b
соответственно.
Из документов:
Если a - это массив ND, а b - это массив MD (где M> = 2), то это сумма произведений по последней оси a и от второй к последней оси b:
точка(a, b) [i, j, k, m] = сумма (a [i, j,:] * b [k,:, m])
Так что в нашем случае мы имеем,
a[2,3,2,:] = [342, 343, 344, 345, 346, 347]
b[1,2,:,2] = [249, 246, 243, 240, 237, 234]
И когда вы их ставите,
np.dot([249, 246, 243, 240, 237, 234], [342, 343, 344, 345, 346, 347])
Вы получаете 499128
Вы получаете тот же ответ, когда используете np.dot(a[2,3,2,:], b[1,2,:,2])
или стенографию np.dot(a, b)[2,3,2,1,2,2]
Когда вы не используете какой-либо индекс, я предполагаю, что вы получаете каждую перестановку вышеупомянутого, следовательно, интуитивные размеры счетчика c = np.dot(a, b)
РЕДАКТИРОВАТЬ # 2 Причиной формы c
является то, что если индексировать c[2,3,2,1,2,2]
согласноНапример, вы получите соответствующий ответ 499128
.