Esiste uno stile numpy per moltiplicare due array per elemento? [duplicare]

Sep 24 2020

Di seguito è riportato un esempio di un codice che esegue la moltiplicazione elementwise per due array 1D di dimensioni diverse e restituisce un nuovo array 2D desiderato:

a = np.array([1, 2, 3, 4])
b = np.array([1, 10, 100])

np.array(list(map(lambda a_i: a_i * b, a)))

>>> array([[  1,  10, 100],
          [  2,  20, 200],
          [  3,  30, 300],
          [  4,  40, 400]])

Tuttavia, sono curioso, esiste una funzione numpy nativa per questo?

Risposte

1 Grismar Sep 24 2020 at 13:37

Hai due opzioni:

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([1, 10, 100])

c = a[:, None] * b
print(c)

d = np.outer(a, b)
print(d)

Risultati:

[[  1  10 100]
 [  2  20 200]
 [  3  30 300]
 [  4  40 400]]
[[  1  10 100]
 [  2  20 200]
 [  3  30 300]
 [  4  40 400]]