この整数のメモリビューをこの(かなり些細な)関数に渡すのに問題があります。Pythonは私にこのエラーを与えています:
ValueError: Buffer dtype mismatch, expected 'int' but got 'long'
誰かが何が起こっているのか理解するのを手伝ってくれますか? stackoverflow を検索すると、python が型を解釈する方法と、C が型を解釈する方法に関係しているようです。
%%cython
def myfunction(int [:] y):
pass
# Python code
import numpy as np
y = np.array([0, 0, 1, 1])
myfunction(y)
これにより、ValueError
上から が生成されます。
編集:ここに私が発見した他のいくつかのものがあります。
明確にするためにy
、次の方法を宣言すると、このエラーが持続します。
y = np.array([0, 0, 1, 1], dtype='int')
y = np.array([0, 0, 1, 1], dtype=np.int)
y = np.array([0, 0, 1, 1], dtype=np.int64)
ただし、次のように宣言すると機能y
します
y = np.array([0, 0, 1, 1], dtype=np.int32)
なぜこれが当てはまるのか、誰かが提案したいですか?np.int32
さまざまなコンピューターで動作しますか? (私は 2013 年の macbook pro Retina を使用しています。)