Может кто-нибудь объяснить, как называется это свойство массива Numpy? - PullRequest
0 голосов
/ 04 февраля 2020

Код, который у меня есть, выглядит следующим образом:

import numpy as np
z = np.array([
        [1, 2],
        [3]
])

x = np.array([
        [4, 5]
])
print(np.multiply(x,z))

В результате этой программы создается список списков. Это отличается от обычных правил вещания, которые применяются к массивам с одинаковыми размерами. Есть ли название для этого свойства? Кроме того, почему он явно упоминает список слов в выводе?

[[list([1, 2, 1, 2, 1, 2, 1, 2]) list([3, 3, 3, 3, 3])]]
[Finished in 0.244s]

1 Ответ

3 голосов
/ 04 февраля 2020

Это просто нормальное умножение на ячейку. Поскольку ваш массив 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...