私は4つのアレイdata
(50,8,2048,256)の8つの2048x256ピクセルイメージを含む50グループです。 times
は、各画像が撮影された時間を示す形状の配列(50,8)です。4Dナンシーアレイの最適化
私は、各グループのすべての画像の各ピクセルで一次多項式の近似を計算し、形状の配列(50,2048,256,2)を与えます。これは本質的に、50個のグループのそれぞれのベクトルプロットです。私は多項式を格納するために使用するコードは、次のとおり
fits = np.ones((50,2048,256,2))
times = times.reshape(50,8,1).repeat(2048,2).reshape(50,8,2048,1).repeat(256,3)
for group in range(50):
for xpos in range(2048):
for ypos in range(256):
px_data = data[:,:,ypos,xpos]
fits[group,ypos,xpos,:] = np.polyfit(times[group,:,ypos,xpos],data[group,:,ypos,xpos],1)
今挑戦は私がfits
から多項式係数を使用してアレイ状のnew_data
(50,12,2048,256)を生成することですnew_time
からの時間を使用して、12個の画像の50個のグループを生成する。
私は画像を生成するためにnp.polyval(fits, new_time)
のようなものを使うことができますが、私はどのようにフレーズするかと非常に混同しています。それは次のようなものです:
new_data = np.ones((50,12,2048,256))
for i,(times,fit) in enumerate(zip(new_times,fits)):
new_data[i] = np.polyval(fit,times)
しかし、私は放送エラーを取得しています。どんな支援も大歓迎です! [OK]を
更新 ので、私はそれが仕事をするようにコードを少し変更して、私がしたい正確に何をすべきか、それはすべてのこれらのループとひどく遅いです(グループの意味あたり〜1分、これはほとんど私を取ります走る1時間!)。誰もがこれをスピードアップするために最適化する方法を提案できますか?
# Generate the polynomials for each pixel in each group
fits = np.ones((50,2048,256,2))
times = np.arange(0,50*8*grptme,grptme).reshape(50,8)
times = times.reshape(50,8,1).repeat(2048,2).reshape(50,8,2048,1).repeat(256,3)
for group in range(50):
for xpos in range(2048):
for ypos in range(256):
fits[group,xpos,ypos] = np.polyfit(times[group,:,xpos,ypos],data[group,:,xpos,ypos],1)
# Create new array of 12 images per group using the polynomials for each pixel
new_data = np.ones((50,12,2048,256))
times = np.arange(0,50*12*grptme,grptme).reshape(50,12)
times = times.reshape(50,12,1).repeat(2048,2).reshape(50,12,2048,1).repeat(256,3)
for group in range(50):
for img in range(12):
for xpos in range(2048):
for ypos in range(256):
new_data[group,img,xpos,ypos] = np.polynomial.polynomial.polyval(times[group,img,xpos,ypos],fits[group,xpos,ypos])
フィットと時間は両方とも多次元配列になりますが、numpy.polyvalのドキュメントは1D配列が必要であることを示しています。あなたは 'numpy.polynomial.polynomial.polyval'(ドキュメンテーション[here](http://docs.scipy。org/doc/numpy/reference/generated/numpy.polynomial.polynomial.polyval.html#numpy.polynomial.polynomial.polyval)) – Ajean
@Ajeanこれは正しい関数のように見えます。しかし、それをデータセットにどのように適用するかについてのアドバイスはありますか?私は、グループの多項式係数を使用して、各グループに12の画像を生成したいと思っています(50,12,2048,256)。 –