**注意:**这是要求进行通常的元组到数组转换的逆操作。
我必须将一个参数作为嵌套元组传递给( Package 的c++)函数。例如,以下工作
X = MyFunction( ((2,2),(2,-2)) )
而下列各项 * 不 *
X = MyFunction( numpy.array(((2,2),(2,-2))) )
X = MyFunction( [[2,2],[2,-2]] )
不幸的是,我想使用的参数是一个numpy数组。对于某个N,该数组的维数始终为2xN,这可能相当大。
有没有简单的方法把它转换成元组?我知道我可以循环,创建一个新的元组,但更希望numpy数组提供一些不错的访问。
如果不可能像我希望的那样很好地做到这一点,那么最好的方法是什么呢?
6条答案
按热度按时间8ftvxx2r1#
r6hnlfcb2#
这里有一个函数可以做到这一点:
举个例子:
relj7zay3#
我不满意,所以我最后用了这个:
我不知道是不是更快,但看起来更有效;)
368yc8dk4#
另一种选择
如果你要将NumPy数组传递给C++函数,你可能还想看看使用Cython或SWIG。
8nuwlpux5#
如果你喜欢长切,这里有另一种方法tuple(tuple(a_m.tolist())for a_m in a)
输出为((1,2),(3,4))
注意,(tuple(a_m.tolist())for a_m in a)将给予一个生成器表达式。灵感来自@norok2对Greg von Winckel's answer的评论
agxfikkp6#
这里是一个递归的解决方案
tuple
-ify一个任意嵌套的可迭代序列,