如何在python中将向量追加到矩阵中

Had*_*adi 10 python arrays numpy

我想在python中将一个向量追加到矩阵中.我试过appendconcatenate方法,但我没有得到答案.我以前和Matlab一起工作过,我用过这个:

m = zeros(10, 4) % define my matrix, 10x4
v = ones(10, 1) % my vecto, 10x1
c = [m,v] % so simple! the result is: 10x5 (the vector added as the last column)
Run Code Online (Sandbox Code Playgroud)

我怎么能在使用numpy的python中做到这一点?

谢谢

Joe*_*ton 27

你正在寻找np.r_np.c_.(想想"列堆栈"和"行堆栈"(它们也是函数),但是使用matlab样式的范围生成.)

另见np.concatenate,np.vstack,np.hstack,np.dstack,np.row_stack,np.column_stack等.

例如:

import numpy as np
m = np.zeros((10, 4))
v = np.ones((10, 1))
c = np.c_[m, v]
Run Code Online (Sandbox Code Playgroud)

产量:

array([[ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  1.]])
Run Code Online (Sandbox Code Playgroud)

这也等同于np.hstack([m, v])np.column_stack([m, v])

如果你不从MATLAB的到来,hstackcolumn_stack可能看起来更具可读性和描述.(出于这个原因,他们在这种情况下可以说是更好的.)

但是,np.c_并且np.r_具有来自matlab的人们期望的附加功能.例如:

In [7]: np.r_[1:5, 2]
Out[7]: array([1, 2, 3, 4, 2])
Run Code Online (Sandbox Code Playgroud)

要么:

In [8]: np.c_[m, 0:10]
Out[8]:
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  2.],
       [ 0.,  0.,  0.,  0.,  3.],
       [ 0.,  0.,  0.,  0.,  4.],
       [ 0.,  0.,  0.,  0.,  5.],
       [ 0.,  0.,  0.,  0.,  6.],
       [ 0.,  0.,  0.,  0.,  7.],
       [ 0.,  0.,  0.,  0.,  8.],
       [ 0.,  0.,  0.,  0.,  9.]])
Run Code Online (Sandbox Code Playgroud)

无论如何,对于MATLAB人,这是很方便的了解np.r_np.c_vstack,hstack等等.

  • 100%正确,但我不鼓励使用`c_`和`r_`一般,它们在python代码中看起来很奇怪似乎只存在于来自MATLAB的mollycoddle用户. (4认同)