1

scipy ドキュメントでは、 を使用する場合の Blitz++ スタイルの操作と、 を使用するweave.blitz()場合の C スタイルのインデックス作成の例が示されてweave.inline()います。Blitz weave.inline()++ スタイルのインデックス作成とリダクションもサポートしています。それはとても便利です。実際に Blitz++ スタイルのインデックス作成が許可されている場合は、コードweave.inline()内の numpy 配列から Blitz 配列を取得する方法を教えてください。weave.inline()とても有難い。

4

1 に答える 1

1

次に例を示します。weave.inline() を呼び出すときに type_converter = weave.converters.blitz を設定します。

# -*- coding: utf-8 -*-
import scipy.weave as weave
import numpy as np
import time

def my_sum(a):
    n=int(len(a))
    code="""
    int i;

    double counter;
    counter =0;
    for(i=0;i<n;i++){
        counter=counter+a(i);
    }
    return_val=counter;
    """

    err=weave.inline(  
        code,   
        ['a','n'],   
        type_converters=weave.converters.blitz, 
        compiler="gcc"  
    )
    return err

a = np.arange(0, 10000000, 1.0)
print my_sum(a)
于 2012-02-10T04:38:39.013 に答える