【问题标题】:merge 2D array into a list python将二维数组合并到一个列表python中
【发布时间】:2014-11-13 17:24:58
【问题描述】:

我想做的是像这样转一个二维数组:

np.array([[ 0, 1, 2, 3], [ 1, 5, 6, 7]])

进入这个(包含所有数字的列表):

[0,1,2,3,1,5,6,7]

有什么方法可以实现吗?

【问题讨论】:

  • 你真的想要一个列表还是只是np.flatten??
  • +1:谷歌搜索“flatten”只有在你知道使用“flatten”这个词时才有效,但如果你知道,你已经知道答案了。
  • 帕德莱克·坎宁安是对的。您通常希望避免减少数据类型的性质。如果您以 numpy.array 开头,请将其保留为 numpy.array。否则,当有人认为它仍然是 numpy.array 时,可能会导致错误/混淆,并尝试将其用作一个。

标签: python arrays list numpy


【解决方案1】:
x = np.array([[ 0, 1, 2, 3], [ 1, 5, 6, 7]])    

list(x.flat)    # if you want a list
#  [0, 1, 2, 3, 1, 5, 6, 7]

x.flatten()  # if you want a numpy array
#   array([0, 1, 2, 3, 1, 5, 6, 7])

我不清楚你想要一个列表还是 numpy 数组,但它们都很容易获得(尽管我假设你想要一个列表,因为你用 list 标记了这个问题)。选择您想要或对您最有用的东西是合理的。

对于许多用途,numpy has significant advantages over lists,但有时列表效果更好。例如,在许多构造中,一次获取一个项目并且不提前知道结果输出数组的大小,在这种情况下,使用append 构建一个列表然后转换它是有意义的到一个 numpy 数组进行 FFT。

还有其他方法可以在列表和 numpy 数组之间进行转换。当您需要做一些不同的事情(例如,更快)时,请务必查看文档或在此处询问。

【讨论】:

  • 绝对是最好的,因为 OP 正在使用 numpy
  • x.reshape(-1) 是另一种生成一维数组的方法。添加.tolist() 使其成为一个列表。
  • 有趣的一点是flatten 返回一个副本,ravel(和reshape)只在必要时这样做。在某些情况下,这很重要。
猜你喜欢
  • 1970-01-01
  • 2021-10-21
  • 2018-09-20
  • 2017-12-13
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
相关资源
最近更新 更多