b
配列を別の配列との算術演算の場合と同じ形にブロードキャストしたいと思いa
ます。
たとえば、a.shape = (3,3)
とがスカラーだった場合、形状がスカラーであり、スカラーで埋められてb
いる配列を取得したいと思います。(3,3)
これを行う1つの方法は次のとおりです。
>>> import numpy as np
>>> a = np.arange(9).reshape((3,3))
>>> b = 1 + a*0
>>> b
array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
これは実際には機能しますが、少し奇妙に見えるので仕方がなく、私がやろうとしていたコードを見ている他の人にはわかりません。
これを行うためのよりエレガントな方法はありますか?のドキュメントを見てきましたがnp.broadcast
、桁違いに遅くなっています。
In [1]: a = np.arange(10000).reshape((100,100))
In [2]: %timeit 1 + a*0
10000 loops, best of 3: 31.9 us per loop
In [3]: %timeit bc = np.broadcast(a,1);np.fromiter((v for u, v in bc),float).reshape(bc.shape)
100 loops, best of 3: 5.2 ms per loop
In [4]: 5.2e-3/32e-6
Out[4]: 162.5