オブジェクト私はpoly1d
オブジェクトの配列を作成するには、最初のnumpyの中で、それが可能であるという事実とこれを開始したいと思います:numpyの問題が
random_poly = np.frompyfunc(lambda i, j: np.poly1d(np.random.randint(1, 4, 3)), 2, 1)
def random_poly_array(shape):
return np.fromfunction(random_poly, shape)
a1 = random_poly_array((3,3))
これはうまく動作しますが、そして私たちもnp.dot
を使用して、このフォームから作られた行列を乗算することができます
a2 = random_poly_array((3,3))
a1_x_a2 = np.dot(a1, a2)
はしかし、他のほとんどの方法が機能しません。たとえば、特定のpoly1d
オブジェクトのリストを取ることができないと、配列に変換:そのよう
np.array([np.poly1d([1,2,3]), np.poly1d([1,2,3])])
はValueError: cannot copy sequence with size 2 to array axis with dimension 3
が発生します。混乱に追加するには、
np.array([np.poly1d([1,2]), np.poly1d([1,2])])
はエラーを発生させ、代わりにちょうど2のの2x2
配列を作成しません。 dtype=object
を追加しても影響はなく、numpy
はまだpoly1d
オブジェクトを配列に変換しようとします。
これが問題である理由は、1つの次元Dのアレイを取り、寸法D-1のpoly1d
オブジェクトの配列に変換することができないということです。私はpoly1d
オブジェクトの配列を返すには
arr = np.arange(1, 10).reshape(3,3)
np.apply_along_axis(np.poly1d, 0, arr)
を期待しているだろうが、代わりにそれはunalterated配列を返します。さらに悪いことに、arr=np.arange(9).reshape(3,3)
の場合、最初のpoly1d
オブジェクトの作成時に、係数がゼロであるため3の代わりに2の長さになるため、エラーが発生します。したがって、私の質問はこれです:numpyでpoly1d
配列を作成するための実現可能な方法はありますか?そうでない場合は、どうしてですか? 、配列にPaul Panzerによって私の注意に持って来ら何かをオブジェクトをブロードキャストしないようにnumpy
を強制None
の概念を使用して
np.array([None、np.poly1d([1,2])、np.poly1d([1,2])])[1:] 'を実行できます。正確ではありませんが、動作します。 –
これは面白い方法ですが、私はそれを使って別の配列から 'poly1d'配列を作成する方法を考え出したと思います。 – Sebastian
答えとして共有してみませんか? –