Это просто нормальное умножение на ячейку. Поскольку ваш массив z
не является истинной матрицей (он не имеет квадратной формы), Numpy интерпретирует его как строку из двух объектов:
>>> z
array([[1, 2], [3]], dtype=object)
>>> z.shape
(2,)
Отсюда здесь вы обычно умножаете - первый объект умножается на 4, второй на 5:
>>> [1, 2]*4
[1, 2, 1, 2, 1, 2, 1, 2]
>>> [3]*5
[3, 3, 3, 3, 3]
просто нормально Python умножение списка - это результат, который вы получаете. Действительно, ваш результат не является «списком списков». Это массив формы (1, 2)
из dtype=object
, поэтому ряд из двух объектов (которые оказываются списками):
>>> np.multiply(x,z)
array([[[1, 2, 1, 2, 1, 2, 1, 2], [3, 3, 3, 3, 3]]], dtype=object)
>>> np.multiply(x,z).shape
(1, 2)