将numpy数组转换为元组

注意:这是要求通常的元组到数组转换的反转。

我必须将一个parameter passing给(包装的c ++)函数作为嵌套元组。 例如,下面的作品

X = MyFunction( ((2,2),(2,-2)) ) 

而以下则不

 X = MyFunction( numpy.array(((2,2),(2,-2))) ) X = MyFunction( [[2,2],[2,-2]] ) 

不幸的是,我想使用的论点来作为一个numpy数组。 该数组对于某些N总是具有2×N的维数,这可能相当大。

有没有一种简单的方法将其转换为元组? 我知道,我可以循环,创build一个新的元组,但宁愿如果numpy数组提供了一些很好的访问。

如果不能像我所希望的那样做得这么好,那么通过循环或者其他什么方式来做到最好的方法是什么?

 >>> arr = numpy.array(((2,2),(2,-2))) >>> tuple(map(tuple, arr)) ((2, 2), (2, -2)) 

这是一个可以做到的function:

 def totuple(a): try: return tuple(totuple(i) for i in a) except TypeError: return a 

举个例子:

 >>> array = numpy.array(((2,2),(2,-2))) >>> totuple(array) ((2, 2), (2, -2)) 

另外一个select

 tuple([tuple(row) for row in myarray]) 

如果您将NumPy数组传递给C ++函数,那么您也可以考虑使用Cython或SWIG。

我不满意,所以最后我用这个:

我:a = numpy.array([[1,2,3],[4,5,6]])

我:a

o:array([[1,2,3],[4,5,6]])

我:元组(a.reshape(1,-1)[0])

○:(1,2,3,4,5,6)

我不知道是否更快,但看起来更有效;)