Я хочу выполнить поэлементное умножение, чтобы умножить два списка по значению в Python, как мы можем это сделать в Matlab.
Вот как бы я сделал это в Matlab.
a = [1,2,3,4]
b = [2,3,4,5]
a .* b = [2, 6, 12, 20]
Список постижение дало бы 16 записей списка, для каждой комбинации x * y
из x
от a
иy
с b
. Не уверен, как отобразить это.
Если кому-то интересно, у меня есть набор данных, и я хочу умножить его на Numpy.linspace(1.0, 0.5, num=len(dataset)) =)
.
Ответы:
Используйте понимание списка, смешанное с
zip()
:.источник
map(lambda x,y:x*y,lista,listb)
.listb
довольно список элементов типаlistb
, и нам нужно работать, чтобы получить единый список. Ex. (x, pi, e) с [(4, 5, 2), (1, 2, 4), (4, 5, 6), (1, 1, 2), (3, 3, 4)], когда взято (x, pi, e) оперируется с (4, 5, 2), а затем (x, pi, e) оперируется с (1, 2, 4) ... и так далее.Поскольку вы уже используете
numpy
, имеет смысл хранить ваши данные вnumpy
массиве, а не в списке. Как только вы это сделаете, вы получите такие вещи, как поэлементные продукты бесплатно:источник
Используйте np.multiply (a, b):
источник
Вы можете попробовать умножить каждый элемент в цикле. Короткая рука для этого
источник
Еще один ответ:
-1
... требует импорта+1
... очень читабеленвыходы [10, 22, 36, 52]
источник
Довольно интуитивный способ сделать это:
источник
Вы можете умножить, используя
lambda
источник
Для больших списков мы можем сделать это как-то иначе:
product_iter_object.next()
дает каждый элемент в списке вывода.Выводом будет длина более короткого из двух входных списков.
источник
создать массив из них; умножить каждый список на массив; преобразовать массив в список
источник
Ответ gahooa верен для вопроса, сформулированного в заголовке, но если списки уже имеют числовой формат или размер больше десяти, он будет НАМНОГО быстрее (на 3 порядка), а также более читабельным, чтобы выполнить простое умножение на кусочки, как предлагает NPE. Я получаю эти сроки:
т.е. из следующей тестовой программы.
источник
Можно использовать перечислять.
источник
map
Функция может быть очень полезна здесь. Используяmap
мы можем применить любую функцию к каждому элементу итерируемого.Python 3.x
Конечно:
эквивалентно
Таким образом, мы можем получить наше решение через:
В Python 2.x это
map()
означает: применять функцию к каждому элементу итерируемого и создавать новый список. В Python 3.x создавайтеmap
итераторы вместо списков.Вместо того, чтобы
my_mul
мы могли использоватьmul
операторPython 2.7
Python 3.5+
Обратите внимание, что, поскольку
map()
конструирует итератор, мы используем*
итеративный оператор распаковки, чтобы получить список. Подход распаковки немного быстрее, чемlist
конструктор:источник
Чтобы сохранить тип списка и сделать это в одной строке (после импорта numpy как np, конечно):
или
источник
Вы можете использовать это для списков одинаковой длины
источник