numpy.r_ 与 numpy.c_

np.r_ 是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于 pandas 中的 concat()。

np.c_ 是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的merge()。

import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.c_[a,b]

print(np.r_[a,b])
print(np.c_[c,a])

其结果为

[1 2 3 4 5 6]
[ [1 4 1]
[ 2 5 2]
[3 6 3] ]

numpy.r_ 是将一系列的序列合并到一个数组中,调用是要用中括号 [],而不是 ()。

它有两种类型的参数,放在最前面的控制参数,以及后面逗号分开的要合并的序列。
控制参数其他的情况都很好理解,本文主要解释控制参数中包含了3个数的情况,第3个参数的作用。
其中第3个参数是用来控制后面序列的 upgrade 方式的,由于第二参数控制了最小的维度,后面的序列参数中可能需要一些维度提升才能进行合并。所以第三个参数控制的是提升的这个维度的放在序列的维度元祖中的位置。
下面举一些例子.

import numpy as np

np.r_['0, 2, 0', [1, 2, 3], [4, 5, 6]]
# 这个代码片段的控制参数 0 表示将在第一个维
# 度对后面序列进行合并,第二个控制参数 2 表示
# 合并后的结果最少要 2 维,所以在合并前对维度
# 较少的序列进行维度提升,而这个提升方式则是第
# 三个参数控制,此处第三个参数为 0, 后面两个序列
# 的维度是 (3, ),由于第三个控制参数是 0,所以
# 提升的维度在序列的维度元组中位置是 0 (即在
# 维度数组的 0 号位置添加 1),即提升后的维度为
# (3,1),所以提升后的第一个序列应该为 
# [ [1], [2], [3] ], 所以最后的结果是
# [ [1], [2], [3], [4], [5], [6] ]

np.r_['0, 2, 1', [1, 2, 3], [4, 5, 6]] 
# 提升后应该为 [ [1, 2, 3]], 所以结果为
# [ [1, 2, 3], [4, 5, 6]]

猜你喜欢

转载自blog.csdn.net/dahaiyudong/article/details/79821820