将列连接到矩阵(numpy)

时间:2016-02-02 16:01:31

标签: python numpy concatenation

我有一个矩阵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 个答案:

答案 0 :(得分:2)

我认为你想要的只是

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

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

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

如果你实际上想要连接(例如,如果a不为空,但你想要添加更多列,你可以按照你的建议去做,但沿着axis=1。请小心,因为目前您正在将列连接到具有非初始化条目的空矩阵。

答案 1 :(得分:1)

在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以了解多维数组中的索引和 here是包含 Numpy模块中切片的数组索引文档。