首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将numpy数组转换为tuple

将numpy数组转换为tuple
EN

Stack Overflow用户
提问于 2012-04-05 01:33:56
回答 5查看 227.1K关注 0票数 136

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

我必须将一个参数作为嵌套的元组传递给(包装的c++)函数。例如,下面的代码可以工作

代码语言:javascript
复制
X = MyFunction( ((2,2),(2,-2)) )

而下面的则不是

代码语言:javascript
复制
X = MyFunction( numpy.array(((2,2),(2,-2))) )
X = MyFunction( [[2,2],[2,-2]] )

不幸的是,我想使用的参数是一个numpy数组。该数组的维数总是为2xN,即N,这可能相当大。

有没有一种简单的方法可以把它转换成元组?我知道我可以遍历,创建一个新的元组,但如果numpy数组提供了一些很好的访问方式,我会更喜欢。

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-04-05 01:35:42

代码语言:javascript
复制
>>> arr = numpy.array(((2,2),(2,-2)))
>>> tuple(map(tuple, arr))
((2, 2), (2, -2))
票数 196
EN

Stack Overflow用户

发布于 2012-04-05 01:52:23

下面是一个可以做到这一点的函数:

代码语言:javascript
复制
def totuple(a):
    try:
        return tuple(totuple(i) for i in a)
    except TypeError:
        return a

下面是一个例子:

代码语言:javascript
复制
>>> array = numpy.array(((2,2),(2,-2)))
>>> totuple(array)
((2, 2), (2, -2))
票数 34
EN

Stack Overflow用户

发布于 2013-08-12 21:35:06

我并不满意,所以我最终使用了这个:

代码语言:javascript
复制
>>> 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)

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

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10016352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档