title: how to multiply pandas dataframe with numpy array with broadcasting
body: <p>I have a dataframe of shape (4, 3) as following:</p>
  <pre><code>In [1]: import pandas as pd
  
  In [2]: import numpy as np
  
  In [3]: x = pd.DataFrame(np.random.randn(4, 3), index=np.arange(4))
  
  In [4]: x
  Out[4]: 
            0         1         2
  0  0.959322  0.099360  1.116337
  1 -0.211405 -2.563658 -0.561851
  2  0.616312 -1.643927 -0.483673
  3  0.235971  0.023823  1.146727
  </code></pre>
  <p>I want to multiply each column of the dataframe with a numpy array of shape (4,):</p>
  <pre><code>In [9]: y = np.random.randn(4)
  
  In [10]: y
  Out[10]: array([-0.34125522,  1.21567883, -0.12909408,  0.64727577])
  </code></pre>
  <p>In numpy, the following broadcasting trick works:</p>
  <pre><code>In [12]: x.values * y[:, None]
  Out[12]: 
  array([[-0.32737369, -0.03390716, -0.38095588],
         [-0.25700028, -3.11658448, -0.68303043],
         [-0.07956223,  0.21222123,  0.06243928],
         [ 0.15273815,  0.01541983,  0.74224861]])
  </code></pre>
  <p>However, it doesn't work in the case of pandas dataframe, I get the following error:</p>
  <pre><code>In [13]: x * y[:, None]
  ---------------------------------------------------------------------------
  ValueError                                Traceback (most recent call last)
  &lt;ipython-input-13-21d033742c49&gt; in &lt;module&gt;()
  ----&gt; 1 x * y[:, None]
  ...
  ValueError: Shape of passed values is (1, 4), indices imply (3, 4)
  </code></pre>
  <p>Any suggestions?</p>