注意:这要求与通常的元组到数组转换相反。
我必须将一个参数作为嵌套的元组传递给(包装的c++)函数。例如,下面的代码可以工作
X = MyFunction( ((2,2),(2,-2)) )
而下面的则不是
X = MyFunction( numpy.array(((2,2),(2,-2))) )
X = MyFunction( [[2,2],[2,-2]] )
不幸的是,我想使用的参数是一个numpy数组。该数组的维数总是为2xN,即N,这可能相当大。
有没有一种简单的方法可以把它转换成元组?我知道我可以遍历,创建一个新的元组,但如果numpy数组提供了一些很好的访问方式,我会更喜欢。
如果不能像我希望的那样很好地做到这一点,那么通过循环或其他方式来做到这一点最好的方法是什么?
发布于 2012-04-05 01:35:42
>>> arr = numpy.array(((2,2),(2,-2)))
>>> tuple(map(tuple, arr))
((2, 2), (2, -2))
发布于 2012-04-05 01:52:23
下面是一个可以做到这一点的函数:
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))
发布于 2013-08-12 21:35:06
我并不满意,所以我最终使用了这个:
>>> a=numpy.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> tuple(a.reshape(1, -1)[0])
(1, 2, 3, 4, 5, 6)
我不知道它是否更快,但它看起来更有效;)
https://stackoverflow.com/questions/10016352
复制相似问题