首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中展平numpy中的数组的正确和有效的方法?

在python中展平numpy中的数组的正确和有效的方法?
EN

Stack Overflow用户
提问于 2012-01-30 06:29:38
回答 4查看 69.2K关注 0票数 32

我有:

a = array([[1,2,3],[4,5,6]])

我想要扁平化它,将两个内部列表连接到一个平面数组条目中。我可以这样做:

array(list(flatten(a)))

但由于列表类型转换,这似乎效率很低(我希望以一个数组而不是生成器结束。)

另外,如何将其推广到下面这样的数组:

b = array([[[1,2,3],[4,5,6]], [[10,11,12],[13,14,15]]])

结果应该是:

b = array([[1,2,3,4,5,6],
           [10,11,12,13,14,15]])

有没有内置的/有效的numpy/scipy运算符?谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-30 06:32:09

您可以使用reshape method

>>> import numpy
>>> b = numpy.array([[[1,2,3],[4,5,6]], [[10,11,12],[13,14,15]]])
>>> b.reshape([2, 6])
array([[ 1,  2,  3,  4,  5,  6],
       [10, 11, 12, 13, 14, 15]])
票数 20
EN

Stack Overflow用户

发布于 2014-05-08 19:08:02

您可能需要检查numpy.flattennumpy.ravel,它们都从n-d数组中返回一个1-d数组。

此外,如果您不打算修改返回的一维数组,我建议您使用numpy.ravel,因为它不会创建数组的副本,而只是返回数组的一个视图,这比numpy.flatten快得多。

>>>a = np.arange(10000).reshape((100,100))

>>>%timeit a.flatten()
100000 loops, best of 3: 4.02 µs per loop

>>>%timeit a.ravel()
1000000 loops, best of 3: 412 ns per loop

也可以看看这个post

票数 35
EN

Stack Overflow用户

发布于 2012-01-30 06:39:33

这样如何:

>>> import numpy as np
>>> a=np.arange(1,7).reshape((2,3))
>>> a
array([[1, 2, 3],
       [4, 5, 6]])
>>> a.flatten()
array([1, 2, 3, 4, 5, 6])

>>> import numpy as np
>>> b=np.arange(1,13).reshape((2,2,3))
>>> b
array([[[ 1,  2,  3],
        [ 4,  5,  6]],

       [[ 7,  8,  9],
        [10, 11, 12]]])
>>> b.reshape((2,6))
array([[ 1,  2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11, 12]])
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9057379

复制
相关文章

相似问题

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