import numpy as np
matrix1 = np.array([[1,2,3],[4,5,6]])
vector1 = matrix1[:,0] # This should have shape (2,1) but actually has (2,)
matrix2 = np.array([[2,3],[5,6]])
np.hstack((vector1, matrix2))
ValueError: all the input arrays must have same number of dimensions
问题是当我选择matrix1的第一列并将其放在vector1中时,它会转换为行向量,所以当我尝试与matrix2连接时,我得到一个维度错误。我能做到这一点。
np.hstack((vector1.reshape(matrix2.shape[0],1), matrix2))
但是每次我必须连接矩阵和向量时,这对我来说太难看了。有更简单的方法吗?
更简单的方法是
vector1 = matrix1[:,0:1]
因此,让我推荐你到another answer of mine:
当你写像
a[4]
这样的东西时,它正在访问数组的第五个元素,而不是给你一个原始数组的某个部分的视图。因此,例如,如果a是一个数字数组,那么a[4]
将只是一个数字。如果a
是二维阵列,即实际上是阵列阵列,那么a[4]
将是一维阵列。基本上,访问数组元素的操作返回的维度比原始数组小1。
以下是其他三个选项:
np.hstack((vector1.reshape(-1, 1), matrix2))
np.newaxis
(或等效地,None
)索引以插入大小为1的新轴:
np.hstack((vector1[:, np.newaxis], matrix2))
np.hstack((vector1[:, None], matrix2))
np.matrix
,为整数列索引始终返回列向量:
matrix1 = np.matrix([[1, 2, 3],[4, 5, 6]])
vector1 = matrix1[:, 0]
matrix2 = np.matrix([[2, 3], [5, 6]])
np.hstack((vector1, matrix2))