将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)
我不知道是否更快,但看起来更有效;)