0
順序で配列要素を設定する__ValueError:私は温度の傾向を計算しようとしていた
ntimes, ny, nx = tempF.shape
print tempF.shape
trend = MA.zeros((ny,nx),dtype=float)
print trend.shape
for y in range (ny):
for x in range(nx):
trends[y,x] = numpy.polyfit(tdum, tempF[:,y,x],1)
print trend()
結果ができ、私はほんの数日間のpythonを使用しました
(24, 241, 480)
(241, 480)
ValueErrorTraceback (most recent call last)
<ipython-input-31-4ac068601e48> in <module>()
12 for y in range (0,ny):
13 for x in range (0,nx):
---> 14 trend[y,x] = numpy.polyfit(tdum, tempF[:,y,x],1)
15
16
/home/charcoalp/anaconda2/envs/pyn_test/lib/python2.7/site-packages/numpy/ma/core.pyc in __setitem__(self, indx, value)
3272 if _mask is nomask:
3273 # Set the data, then the mask
-> 3274 _data[indx] = dval
3275 if mval is not nomask:
3276 _mask = self._mask = make_mask_none(self.shape, _dtype)
ValueError: setting an array element with a sequence.
ある任意の1つ助けてくれてありがとう
'numpy'ルーチン、そしてnumpy.polyfitは一般にvectorised:ベクトル(1D、2D、...)で一度に動作します。したがって、N次元ベクトルを入力すると、N次元ベクトルを得ることができます。しかしここでは、それを 'trend 'の* single *要素に割り当てます。正確に 'numpy.polyfit'によって返されたものを慎重に読んでください。デバッグするには、 'numpy.polyfit'呼び出しの戻り値を何も割り当てずに直接出力してください。それはさらにあなたを助けるはずです。 – Evert
ベクトル化されたアプリケーションは、一般的に明示的なループ(ここでは二重forループのような)を避けるべきであることを意味します。 NumPyはしばしばそれをフードの下で行い、Pythonのfor-loopの通常の(二重の)for-loopよりもはるかに高速に処理する傾向があります。 – Evert
'polyfit'はdeg + 1 long配列を返します。この呼び出しでは、2要素配列が呼び出されます。これをマスクされた配列の1つの要素に割り当てようとしています。なぜ 'trend'はマスクされた配列に初期化されますか? 「トレンド」にどのような価値がありますか? – hpaulj