【发布时间】:2015-08-28 03:39:56
【问题描述】:
我在将这个整数的内存视图传递给这个(相当微不足道的)函数时遇到了麻烦。 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。)
【问题讨论】:
标签: python numpy cython memoryview