Почему умножение массива на константу изменяет размер массива? - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь сделать очень простую c матричную арифметику c, но по какой-то причине даже самая базовая c операция умножения массива на константу дает странные результаты. Вот код:

a = [1,2,3]
a*3

Он возвращает это:

[1, 2, 3, 1, 2, 3, 1, 2, 3]

Это не имеет смысла для меня. Почему умножение массива на константу изменяет размеры?

Ответы [ 3 ]

2 голосов
/ 14 марта 2020

Вот как определяется list.__mul__; Вы не делаете точечное умножение, а обобщаете конкатенацию списков.

Для любого списка lst,

  • lst * 0 == []
  • lst * n == lst + lst * (n-1) для n > 0

, где + является списком списков. Если a и b являются списками, a + b - это список, состоящий из всех элементов a, за которыми следуют все элементы b.

Если вы хотите numpy массив, как подразумевается тегом, вы должны создать один.

>>> from numpy import array
>>> array([1,2,3]) * 3
array([3, 6, 9])
0 голосов
/ 14 марта 2020

Обратите внимание, что в python нет массивов, но есть списки. Список может содержать данные любого типа, такие как строки, числа, словари и т. Д. c. Вот почему, когда вы используете * 3 для списка, a = [1, 2, 3] означает, что вы хотите объединить список «a» три раза.

Чтобы использовать массивы, вы должны импортировать numpy следующим образом:

import numpy as np

a = np.array([1, 2, 3])
a*3
0 голосов
/ 14 марта 2020

Пожалуйста, попробуйте код ниже:

a = np.array([1,2,3])
a * 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...