Translates slice objects to concatenation
两者连接的方式稍有差异,r_表示将片段沿着第一维度方向进行级联;c_表示将片段沿着第二维度方向进行级联。
比如
例1:
两个列表 list1 = [1, 2, 3] list2 = [4, 5, 6],各自维度元组均为(3,)(3列),元组第一维度为列。因此,默认不带控制字符串情况下,r_按列方向级联,c_按行方向级联
list1 = [1, 2, 3]
list2 = [4, 5, 6]
x = np.r_[list1, list2]
y = np.c_[list1, list2]
print 'r_ x'
print x
print 'c_ y'
print y
结果如下:
r_ x
[1 2 3 4 5 6] ->
c_ y
[[1 4] |
[2 5] v
[3 6]]
例2:
list1 = [[1], [2], [3]] list2 = [[4], [5], [6]],维度元组分别为(3,1), (3,1),第一个维度对应行,所以r_按行方向级联,c_按列方向级联。
list1 = [[1], [2], [3]]
list2 = [[4], [5], [6]]
x1 = np.r_[list1, list2]
y1 = np.c_[list1, list2]
print x1
print y1
结果如下:
r_ x
[[1]
[2]
[3]
[4]
[5]
[6]]
c_ y
[[1 4]
[2 5]
[3 6]]
例3:
list1 = [[13, 14], [15, 16]],list2 = [[17, 18], [19, 20]],维度元组分别为(2,2), (2,2),第一个维度对应行,所以r_按行方向级联,c_按列方向级联。
list1 = [[13, 14], [15, 16]]
list2 = [[17, 18], [19, 20]]
x = np.r_[list1, list2]
y = np.c_[list1, list2]
print x
结果如下:
r_ x
[[13 14]
[15 16]
[17 18]
[19 20]]
c_ y
[[13 14 17 18]
[15 16 19 20]]
另外,还支持控制字符串方式,控制字符串可以为逗号分割的两个整数或者三个整数,形如'a, b, c'
其中,
a表示级联方向,等同于前面的r_,c_,0相当于r_,1相当于c_
b表示合并后数组的最少维数
c表示为了满足最低维数,片段进行维度扩展的方式,具体描述就是原片段数据表示哪个维度的第一个元素(在此情况维度是固定,第一维表示行,第二维表示列)。比如[1, 2, 3],如果c=0,则表示第一维度(行),列表中的元素分别代表每行的第一个元素,即2维扩展后变成3行1列数组;c=1,则表示第二维度(列),列表中的元素分别代表每列的第一个元素,即2维扩展后变成1行3列数组。
list1 = [[1], [2], [3]]
list2 = [[4], [5], [6]]
j = np.r_['0, 2, 0', list1, list2] # 当作每行第一个元素,行方向级联
k = np.r_['1, 2, 0', list1, list2] # 当作每行第一个元素,列方向级联
print 'r_ 0'
print j
print 'r_ 1'
print k
# 结果
r_ 0
[[1]
[2]
[3]
[4]
[5]
[6]]
r_ 1
[[1 4]
[2 5]
[3 6]]
list3 = [7, 8, 9]
list4 = [10, 11, 12]
j = np.r_['0, 2, 0', list3, list4] # 当作每行第一个元素,行方向级联
k = np.r_['1, 2, 0', list3, list4] # 当作每行第一个元素,列方向级联
print 'r_ 0'
print j
print 'r_ 1'
print k
# 结果
r_ 0
[[ 7]
[ 8]
[ 9]
[10]
[11]
[12]]
r_ 1
[[ 7 10]
[ 8 11]
[ 9 12]]
list3 = [7, 8, 9]
list4 = [10, 11, 12]
j = np.r_['0, 2, 0', list3, list4] # 当作每行第一个元素,行方向级联
k = np.r_['0, 2, 1', list3, list4] # 当作每列第一个元素,行方向级联
print 'r_ 0'
print j
print 'r_ 1'
print k
# 结果
r_ 0
[[ 7]
[ 8]
[ 9]
[10]
[11]
[12]]
r_ 1
[[ 7 8 9]
[10 11 12]]
刚接触python,有很多理解不到位,欢迎指正,谢谢