numpy中的np.c_和np.r_解释
np.c_和np.r_用于连接两个矩阵
np.r_
: 是按行叠加两个矩阵,也可以说是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat()。np.c_
: 是按列叠加两个矩阵的意思,也可以说是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的merge()。
示例:
import numpy as np
a = np.array([1, 2, 3]).reshape(1,3)
b = np.array([4, 5, 6]).reshape(1,3)
print(a.shape,b.shape)
>(1, 3) (1, 3)
print("a=",a,"b=",b)
>a= [[1 2 3]] b= [[4 5 6]]
c = np.c_[a,b]
print("np.c_[a,b]:\n",c)
>np.c_[a,b]:
[[1 2 3 4 5 6]]
print(c.shape)
>(1, 6)
d=np.r_[a,b]
print("np.r_[a,b]:\n",d)
>np.r_[a,b]:
[[1 2 3]
[4 5 6]]
print(d.shape)
>(2, 3)
若不使用reshape(1,3),则默认是列向量,虽然依旧以行向量的形式显示,如下:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a.shape,b.shape)
>(3,) (3,)
print("a=",a,"b=",b)
>a= [1 2 3] b= [4 5 6]
c = np.c_[a,b]
print("np.c_[a,b]:\n",c)
>np.c_[a,b]:
[[1 4]
[2 5]
[3 6]]
print(c.shape)
>(3, 2)
d=np.r_[a,b]
print("np.r_[a,b]:\n",d)
>np.r_[a,b]:
[1 2 3 4 5 6]
print(d.shape)
>(6,)