SHTOOLS パッケージの PLegendre 関数を使用しています。特定の引数のルジャンドル多項式の配列を返します。PLegendre(lmax,x) は、ルジャンドル多項式 P_0(x) から P_lmax(x) の配列を返します。それはこのように動作します:
In [1]: from pyshtools import PLegendre
loading shtools documentation
In [2]: import numpy as np
In [3]: PLegendre(3,0.5)
Out[3]: array([ 1. , 0.5 , -0.125 , -0.4375])
パラメータとして配列を渡したいので、frompyfunc を使っています。
In [4]: legendre=np.frompyfunc(PLegendre,2,1)
In [5]: legendre(3,np.linspace(0,1,4))
Out[5]:
array([array([ 1. , 0. , -0.5, -0. ]),
array([ 1. , 0.33333333, -0.33333333, -0.40740741]),
array([ 1. , 0.66666667, 0.16666667, -0.25925926]),
array([ 1., 1., 1., 1.])], dtype=object)
出力は配列の配列です。配列をスライスすることで、これから要素の配列を作成できることを理解しています。
In [6]: a=legendre(3,np.linspace(0,1,4))
In [7]: array([a[i][:] for i in xrange(4)])
Out[7]:
array([[ 1. , 0. , -0.5 , -0. ],
[ 1. , 0.33333333, -0.33333333, -0.40740741],
[ 1. , 0.66666667, 0.16666667, -0.25925926],
[ 1. , 1. , 1. , 1. ]])
しかし..配列の配列をスライスする代わりに、これに直接到達する方法はありますか?