2012-02-21 19 views
4

数学的級数の値を含むnumpyの配列を作成したいとします。この例では、前の値の2乗で、a_0 = 2、a_1 = 4、a_3 = 16、などの単一の開始値を与えます。 。numpyの中でベクトル化を使用しようとnumpyを使って系列を効果的に計算するにはどうすればよいですか?

私は、これはうまくいくかもしれないと思った:

import numpy as np 
a = np.array([2,0,0,0,0]) 
a[1:] = a[0:-1]**2 

しかし結果は、私は今、それnumpyのは内部のための一時的な配列を作成しない学んだ

array([2, 4, 0, 0, 0]) 

です出力と最後のコピーこの配列は元の配列の値が0のため失敗します。 numpy、numexprなどのツールを使用してこの関数をベクトル化する方法はありますか? forループを使わずに高速numpy関数が利用可能な場合、系列の値を効果的に計算するには他にどのような方法がありますか?

+0

:http://stackoverflow.com/questions/4407984/is-a-for-loop-necessary-if-elements-この特定の場合は、しかし、forループせずに書くことはかなり簡単です。 of-a-numpy-vector-are-upon-t- – sdaau

答えて

6

NumPyで再帰的シーケンス定義をベクトル化する一般的な方法はありません。また、関連

>>> 2 ** 2 ** numpy.arange(5) 
array([ 2,  4, 16, 256, 65536]) 
+0

ありがとうございました。それは私が望んでいた答えではありませんが、再帰的な定義を避けるために私の問題を書き直すことができます。 – Alexander

関連する問題