【问题标题】:how do I concatenate a single column numpy array with a four column numpy array?如何将单列 numpy 数组与四列 numpy 数组连接起来?
【发布时间】:2015-03-02 17:28:48
【问题描述】:

我有一个 numpy 数组,它是一个列向量。我有另一个 numpy 数组,它是 4 个与单列向量长度相同的列向量。如何制作 [x,5] 的组合数组?

【问题讨论】:

  • '列向量'?什么形状? (x,) 还是 (x,1)?
  • (x,) 是形状。 @MarkDickinson 下面的 cmets 虽然回答了我的问题。我希望我有声誉投票给答案。
  • 那么从技术上讲,它不是“列向量”。它只是一个向量或一维数组。连接数组时,区别很重要。
  • @hpaulj 好的,所以在 matlab 中区别很重要,因为 matlab 在列而不是行中存储和操作数据。区别在 numpy 中很重要,因为 ?
  • 在 MATLAB 中,1:5 是一个行向量 (1,5),它的转置 (1:5).' 是一个列。如果y(5,4)[y, x.'] 会进行连接。 numpy 提供了第三种可能性,(5,)np.array(range(1,6),ndmin=2).T 生成等价的列向量。

标签: arrays numpy concatenation


【解决方案1】:

使用numpy.hstack,您可以水平堆叠矢量(当矢量由于某些原因已经以列形给出时)

import numpy

a = numpy.arange(12).reshape(3,4)
#[[ 0  1  2  3]
# [ 4  5  6  7]
# [ 8  9 10 11]]

b = numpy.arange(3).reshape(3,1)
#[[0]
# [1]
# [2]]

numpy.hstack((a,b))
#[[ 0  1  2  3  0]
# [ 4  5  6  7  1]
# [ 8  9 10 11  2]]

编辑: 否则numpy.stack_column 更适合将一维数组添加到二维数组,因为正如 Mark 所指出的,不需要重新整形,谢谢!

【讨论】:

  • numpy.column_stack 也可以,并且无需重新整形列向量。
  • 非常感谢两位的回答。我发现 hstack 有效,但我来自 matlab 背景,并认为他们也可以简单地做到这一点。
  • @Mark:确实是一个非常有用的命令……不知道这个:)
  • hstackvstackcolumn_stack 等函数在连接之前使用了某种形式的整形。 column_stack 使用 np.array(..., ndmin=2).T
  • 与 MATLAB 的关键区别 - 矩阵是 2d(或更多)。一个 numpy 数组可能是 1d 甚至 0d。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
相关资源
最近更新 更多