Вы можете использовать reduce
метод ufunc:
>>> np.multiply.reduce((X, Y, Z))
array([ 28, 80, 162])
Здесь происходит то, что ufunc np.multiply
, который выглядит и действует как функция, является технически экземпляром класса numpy.ufunc
; все ufuncs имеют четыре специальных метода , один из которых - .reduce()
, который делает то, что вы ищете в этом случае и выдает 1d результат из нескольких 1d массивов одинаковой длины.
Ось по умолчанию равна 0; если вы хотите работать вдоль другой оси, просто укажите, что:
>>> np.multiply.reduce((X, Y, Z), axis=1)
array([ 6, 120, 504])