【问题标题】:Concatenating a column to a matrix (numpy)将列连接到矩阵(numpy)
【发布时间】:2016-02-02 16:01:30
【问题描述】:

我有一个矩阵b,我需要将它的一些列(例如第 2,4 列)放入另一个空矩阵a。基于以下代码:

import numpy as np
a = np.empty([2, 1])
b = np.array([[1, 8, 6, 3], [3, 0, 7, 4]])

所以我想要一个像这样的:

[[8,3][0,4]]

我试过np.concatenate

np.concatenate((a,b[:,1]),axis=0)

但出现此错误:

ValueError: all the input arrays must have same number of dimensions

谁能解释一下我应该如何解决这个错误?或者除了np.concatenate,我还有其他方法可以使用吗?

谢谢。

【问题讨论】:

  • 您想要的是一个(2,2) 数组,但您将a 初始为(2,1)。你看过b[:,1]吗?我希望它是[8,0],只是您想要的两个数字。此时忘记concatenate,专注于正确索引b

标签: python numpy concatenation


【解决方案1】:

我认为你想要的只是

cols = [1, 3]
a = b[:, cols]

您不需要为此目的初始化一个空矩阵a,也不需要连接。

提醒一下:python 使用从 0 开始的索引。根据您所需的示例解决方案,您可能正在寻找列1, 3,而不是2, 4

如果您确实确实想要连接(例如,如果a 不为空,但您想向其附加更多列,则可以按照您的建议进行操作,但axis=1。尽管目前您正在将列连接到具有未初始化条目的空矩阵,但请小心。

【讨论】:

    【解决方案2】:

    利用numpy模块中的copy( )函数来复制矩阵。
    这是解决方案:

    >>> import numpy as np
    >>> b = np.array([[1, 8, 6, 3], [3, 0, 7, 4]])
    >>> a = b[0::,1::2].copy() 
    >>> print a
    [[8 3]
    [0 4]]
    

    当多维数组被索引时,事情变得更加复杂,尤其是多维索引数组。
    通过documentation 了解多维数组中的索引和 hereNumpy 模块 中带有切片的数组索引文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 2021-10-05
      相关资源
      最近更新 更多