【问题标题】:Splicing NumPy arrays拼接 NumPy 数组
【发布时间】:2011-03-19 03:55:49
【问题描述】:

我在将两个数组拼接在一起时遇到问题。假设我有两个数组:

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

当我做vstack((a,b)) 我得到

[[1,2,3],[4,5,6]]

如果我这样做 hstack((a,b)) 我会得到:

[1,2,3,4,5,6]

但我真正想要的是:

[[1,4],[2,5],[3,6]]

如何在不使用 for 循环的情况下完成此操作(需要快速)?

【问题讨论】:

标签: python numpy


【解决方案1】:

试试column_stack()

http://docs.scipy.org/doc/numpy/reference/generated/numpy.column_stack.html

或者,

vstack((a,b)).T

【讨论】:

  • 这将创建一个三维数组。
【解决方案2】:

我忘记了如何转置 NumPy 数组,但你可以这样做:

at = transpose(a)
bt = transpose(b)

result = vstack((a,b))

【讨论】:

  • 转置一维数组是恒等运算。
  • 随意修正语法。就像我说的,我忘记了如何转置一个 numpy 数组。
【解决方案3】:

您可能正在寻找数组的形状操作。您可以查看“Tentative NumPy Tutorial, Array Creation”。

【讨论】:

    【解决方案4】:

    column_stack.

    【讨论】:

      【解决方案5】:
      >>> c = [list(x) for x in zip(a,b)]
      >>> c
      [[1, 4], [2, 5], [3, 6]]
      

      >>> c = np.array([list(x) for x in zip(a,b)])
      >>> c
      array([[1, 4],
             [2, 5],
             [3, 6]])
      

      取决于您要查找的内容。

      【讨论】:

      • 这个问题是关于 NumPy 数组,而不是列表。
      • 是的,但它很可能会比正确的 NumPy 函数慢。
      • @Amber - 是的。我以前从未偶然发现过column_stack,你的答案肯定更好。
      【解决方案6】:
      numpy.vstack((a, b)).T
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-13
        • 2015-05-18
        • 2015-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多