【python】numpyで行ごと・列ごとに計算

 行ごと、列ごとに一括で加減乗除する方法をずっと探していた。
 こう書くとなんじゃそりゃと思われるかもしれないが、n行m列の行列に対してn次元の縦ベクトルを持ってきて、まとめて計算する感じ。
 ずっとやり方がわからなかったのだが、このほど試してみたらなんと普通に書けた。
>>> import numpy as np
>>> a = np.array([[1,2,3],[1,2,3]])
>>> a/np.array([1,2,3])
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])
 え、マジか・・・
 他にも色々試してみる。
>>> a+np.array([1,1,1])
array([[2, 3, 4],
       [2, 3, 4]])
>>> b*np.array([[1],[0.5]])
array([[ 1.,  2.,  3.],
       [ 1.,  2.,  3.]])
 ちなみに、変な次元数で指定すると、
>>> a/np.array([1,2])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (2,3) (2,) 
 こんなエラーが吐かれる。そうか、これがbroadcastの力なのか・・・
 そんなことも知らないでnumpy使ってたのかよとか言われそうだけど、ちょっと感動した。