エラー:TypeError: 'list'はバッファインターフェイスをサポートしていません -Cythonを使用して次のコードを実行しようとしたとき:
cdef int[:] lista = range(1000)
私はCythonで新しいです。それは私にとっては単純なようですが、なぜそれが機能していないのかわかりません...
エラー:TypeError: 'list'はバッファインターフェイスをサポートしていません -Cythonを使用して次のコードを実行しようとしたとき:
cdef int[:] lista = range(1000)
私はCythonで新しいです。それは私にとっては単純なようですが、なぜそれが機能していないのかわかりません...
リストは、すべてのエントリが同じタイプであることを保証しないため、メモリは配列として配置されていませんあなたの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
を必要とします。最善のことは、両方の部分のために、正確にデータ型を指定することである。
こんにちは、残念ながらそれを TypeError: 'array.array'にはバッファインターフェイスがありません –
このコードは動作していますが、long型の場合のみですcdef long [:] lista = numpy.arange(1000) –
私はそれがちょっとしたプラットフォームに依存していると思います(少し残念ながら)。おそらく 'numpy.ara nge(1000、dtype = numpy.int32) 'と' int'と一致すると思います。とにかく - あなたはそれが働いてうれしい... – DavidW