1

シリーズのログを取得するための小さな関数を作成しました。

def get_log_returns(series):
    logs = numpy.log(series.astype('float64') / series.astype('float64').shift(1))
    return logs 

ここで、「合理的な」ログのみを含めるようにしたいと思います。where無限のログを除外するために使用できることを知っています:

def get_log_returns(series):
    logs = numpy.log(series.astype('float64') / series.astype('float64').shift(1))
    return logs.where(logs < numpy.inf)

しかし、負のログを除外したい場合はどうすればよいでしょうか? 私はこのようなものがうまくいくことを望んでいました:

def get_log_returns(series):
    logs = numpy.log(series.astype('float64') / series.astype('float64').shift(1))
    return logs.where((logs < numpy.inf) and (logs > 0))

しかし、これは私に

ValueError: The truth value of an array with more than one element is ambiguous.
 Use a.any() or a.all()

これを行う方法はありますか?

4

2 に答える 2

3

&演算子を使用する必要があります。

logs[(logs < numpy.inf) & (logs > 0)]

andandorはブール シリーズではサポートされていないため、&and|演算子を使用する必要があります。

于 2013-08-12T17:33:03.647 に答える