numpy.asarray因cython memoryview而失败

时间:2016-09-06 12:18:16

标签: numpy cython memoryview

我遇到了一些奇怪的行为,使用numpy.asarray和一个我无法解释的memoryview对象。这是一个在jupyter笔记本中使用cython magic的简短示例 - 我只是创建一个需要两个struct数组缓冲区并返回它们的函数。一个有两个整数,另一个有长整数和一个整数:

my-component1

现在我在python中创建两个数组以传递给这个函数:

cdef struct S1:
    int iGroup
    int iOrder

cdef struct S2:
    long iGroup
    int iOrder

def test_struct(S1[:] s1, S2[:] s2):
    return s1, s2

两者都成功返回为MemoryView对象。现在我想把它们变成一个numpy数组:

dt1 = np.dtype([('iGroup', 'i4'), ('iOrder', 'i4')], align=True)
dt2 = np.dtype([('iGroup', 'i8'), ('iOrder', 'i4')], align=True)

a = np.zeros(10, dtype=dt1)
b = np.zeros(10, dtype=dt2)

x, y = test_struct(a,b)

print x
print y

<MemoryView of 'ndarray' object>
<MemoryView of 'ndarray' object>

我在这里缺少什么?为什么第二个结构不起作用?任何提示将不胜感激!

0 个答案:

没有答案