2017-05-31 11 views

答えて

3

リストは、すべてのエントリが同じタイプであることを保証しないため、メモリは配列として配置されていませんあなたのmemoryviewが期待しているC整数のうちのどれかです。

Python array libraryは互換性がある必要があります。

しかし最も簡単なオプションはnumpyの配列を使用することが考えられます。

cdef int[:] lista = numpy.arange(1000,dtype=numpy.int32) 

データ型には、いくつかの注意事項:アレイのタイプとCythonで指定された型が一致する必要がarange functionはあなたの整数の範囲を提供します。私のPC上でarrayコードが書かれた作品とnumpyコードがcdef int[:]int64(またはcdef long[:]と一致するunspecified_に合わせてint32を必要とします。最善のことは、両方の部分のために、正確にデータ型を指定することである。

+0

こんにちは、残念ながらそれを TypeError: 'array.array'にはバッファインターフェイスがありません –

+0

このコードは動作していますが、long型の場合のみですcdef long [:] lista = numpy.arange(1000) –

+0

私はそれがちょっとしたプラットフォームに依存していると思います(少し残念ながら)。おそらく 'numpy.ara nge(1000、dtype = numpy.int32) 'と' int'と一致すると思います。とにかく - あなたはそれが働いてうれしい... – DavidW