在NumPy中向矩阵添加单列数

2024-03-28 08:53:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,它把一的列向量加到矩阵上。在

def add_ones(x):
    return np.hstack((np.ones((x.shape[0], 1)), x))

当x是一个矩阵时,它做得很好。例如:

^{pr2}$

给予

[[1. 1. 2.]
 [1. 3. 4.]]
[[1. 0. 0. 0. 0. 0.]
 [1. 0. 0. 0. 0. 0.]
 [1. 0. 0. 0. 0. 0.]
 [1. 0. 0. 0. 0. 0.]
 [1. 0. 0. 0. 0. 0.]]

但是当我传递一个向量时:

z = np.zeros(5)
add_ones(z)

它给出了以下错误:

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

我想把它还回去

[1. 0. 0. 0. 0. 0.]

我该怎么办?在


Tags: 函数addreturndef错误nponeszeros
2条回答

必须向z添加另一个维度(使其成为二维5x1矩阵):

add_ones(z[:, np.newaxis])
#array([[ 1.,  0.],
 #      [ 1.,  0.],
#       [ 1.,  0.],
#       [ 1.,  0.],
#       [ 1.,  0.]])

你的函数创建了一个二维数组,对吧?在

def add_ones(x):
    return np.hstack((np.ones((x.shape[0], 1)), x))

如果x也是二维的,那就没问题了,但是当{}是1d时,那就错了。您的函数需要注意x的形状,并在适当的时候创建一个1d数组。在

比如:

^{pr2}$

相关问题 更多 >