np.c
np.c_是按列增加拼接两个矩阵(效果是每行看上去延长了),就是把两矩阵左右相加,要求行数相等。
np.r_是按行增加拼接两个矩阵(效果是每列看上去延长了),就是把两矩阵上下相加,要求列数相等。
参见文档例子:
运行环境jupyternotebook
1.np.c_的用法:
np.c_[np.array([1,2,3]), np.array([4,5,6])]
分析:先明确np.array是用于数据科学计算的,array后面一个方括号数据都是默认列向量的,这也符合机器学习中特征和参数都是默认列向量。列向量[1,2,3]和列向量[4,5,6]根据定义按列相加拼接结果如下,[4,5,6]以列的形式拼接到了列向量[1,2,3]的后面。拼接好后就是一个3*2的矩阵了,如下:
结果:
array([[1, 4],
[2, 5],
[3, 6]])
np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]
分析:上面我们说了array后面数据带一个方括号是列向量,那么带两个显然就是矩阵了,这是1*3的矩阵。1,2,3分别是每一列,4,5,6也是每一列,按列相加,结果显而易见,如下:
结果:
array([[1, 2, 3, 0, 0, 4, 5, 6]])
再看一个np.c_例子:
a = np.array([[1, 2, 3],[7,8,9]])
b = np.array([[4,5,6],[1,2,3]])
c = np.c_[a,b]
c
结果:
array([[1, 2, 3, 4, 5, 6],
[7, 8, 9, 1, 2, 3]])
2.np.r_的用法:
np.r_[np.array([1,2,3]), 0, 0, np.array([4,5,6])]
分析:np._r是按行增加拼接,首先一个方括号是列向量,[1,2,3]是列向量,竖起来,在它下面按行增加,0,0拼接上去,[4,5,6]也是列向量。如下:
结果:
array([1, 2, 3, 0, 0, 4, 5, 6])
a = np.array([[1, 2, 3],[7,8,9]])
b = np.array([[4,5,6],[1,2,3]])
g=np.r_[a,b]
g
结果
array([[1, 2, 3],
[7, 8, 9],
[4, 5, 6],
[1, 2, 3]])
以上读者自己分析。
补充:np.r_,np.c_还有很多用法,给拼接的数据前面添加参数从而让列拼接的变成行拼接的,或者让拼接后仍是列向量的数据变成矩阵。这里就不展开讨论了,详细的用法读者可以用help(np.r_)或者help(np.c_)去看官方的帮助文档。