我有一个矩阵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
我可以使用吗?
谢谢。
答案 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模块中切片的数组索引文档。