我试图在cython中创建一个函数,通过定义cython结构类型来接受numpy结构化数组或记录数组。假设我有数据:
a = np.recarray(3, dtype=[('a', np.float32), ('b', np.int32), ('c', '|S5'), ('d', '|S3')])
a[0] = (1.1, 1, 'this\0', 'to\0')
a[1] = (2.1, 2, 'that\0', 'ta\0')
a[2] = (3.1, 3, 'dogs\0', 'ot\0')
(注意:无论是否有空终止符,下面描述的问题都会出现)
然后我得到了赛顿密码:
^{pr2}$当我试图运行test_struct(a)
时,我得到了一个错误:
ValueError: Expected a dimension of size 5, got 8
如果在数组和相应的结构中重新排序,使包含字符串的字段彼此不相邻,则函数按预期工作。似乎Cython函数没有正确地检测到c
和{
除了重新整理数据(这是可能的,但并不理想),是否还有其他方法将固定长度字符串数据的重排传递到Cython中?在
更新:这似乎是一个潜在的Cython错误。请参见以下关于Cython-google小组的讨论,该讨论提示了问题的发生地:
https://groups.google.com/forum/#!topic/cython-users/TbLbXdi0_h4
更新2:此错误已于2014年2月23日在Github上的master cython分支中修复,该修补程序计划包含在v0.20.2:https://github.com/cython/cython/commit/58d9361e0a6d4cb3d4e87775f78e0550c2fea836
这个bug已经在Github上的master cython分支中得到了修复,该补丁将被包含在v0.20.2中:https://github.com/cython/cython/commit/58d9361e0a6d4cb3d4e87775f78e0550c2fea836
相关问题 更多 >
编程相关推荐