メモリ ビューに格納されている値の配列に値を追加するような単純なことはできないようです。型付きメモリビューが行うべきことではないことを理解しています。しかし、メモリ ビューを np.array に戻すのは、亀が猫を放牧するよりも時間がかかります。
次のようなcdef関数を記述しようとすると:
cdef double[::1] _add(self,double[::1] arr,double val):
cdef double[::1] newarr
cdef int i, n
#n = sizeof(arr)/sizeof(arr[0])
newarr = np.empty(5)
for i in xrange(n):
newarr[i] = arr[i] + val
return newarr
メモリビューが連続していないというエラーが表示されます。
「ValueError: Buffer と memoryview が同じ次元で連続していません。」
これは、渡されたメモリ ビューがスライスされたものでない場合に実際に機能します。しかし、それはプロセスに 10 秒を追加します!