【1】引言
在前序学习过程中,已经深刻体会到要想画图,必须有数据做好支撑,数据的处理往往需要调用numpy模块,因此,对numpy模块的深入学习同样具有至关重要的意义。
今天就一起学习一下numpy模块下的concatenate()函数。
【2】官网教程
首先可以点击下方链接直达官网:
https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html#numpy.concatenate
这里给出了很多参数:
numpy.concatenate((a1, a2, ...), axis=0, out=None, dtype=None, casting="same_kind")
numpy.concatenate():将数据按照同一轴向进行组合
(a1, a2, ...):即将被处理的数据,数据们应在格式上保持一致
axis:数据分布的轴,如果不说,会被统一平面化处理。可以大致理解为,如果给了10个数,就默认它们都在X轴上;
out:输出数据的存储位置。输出数据的类型会与数据被处理前一致
dtype:数据输出的类型,不可以和out同时使用
casting:控制可能发生哪种类型的数据强制转换。默认为‘ same_kind ’。
【3】代码解读
首先是引入计算模块numpy,然后定义了两个不同的数组,之后对数组进行组合。
下述内容先给出了加了注释的代码,还增加了输出内容以辅助深入理解axis参数值的意义。
import numpy as np #引入计算模块
a = np.array([[1, 2], [3, 4]]) #定义数组a
b = np.array([[5, 6]]) #定义数组b
c=np.concatenate((a, b), axis=0) #组合数组a和b
d=np.concatenate((a, b.T), axis=1) #组合数组a和b的转置数组
e=np.concatenate((a, b), axis=None) #组合数组a和b
print('a=\n',a) #输出a
print('b=\n',b) #输出b
print('c=np.concatenate((a, b), axis=0)=\n',c) #输出组合数组a和b
print('d=np.concatenate((a, b.T), axis=1)=\n',d) #输出组合数组a和b的转置数组
print('e=np.concatenate((a, b), axis=None)=\n',e) #输出组合数组a和b的展开数组
运行代码后,获得的输出结果为:
a=
[[1 2]
[3 4]]
b=
[[5 6]]
c=np.concatenate((a, b), axis=0)=
[[1 2]
[3 4]
[5 6]]
d=np.concatenate((a, b.T), axis=1)=
[[1 2 5]
[3 4 6]]
e=np.concatenate((a, b), axis=None)=
[1 2 3 4 5 6]
可见,在数组a两行两列,数组b一行两列的基础上,使用concatenate()函数对数组进行组合:
当axis=0时,输出结果是三行两列,也就是保持列不变,行数直接相加;
当axis=1时,输出结果是两行三列,因为数组b转置为两行一列,所以结果其实是是保持行数不变,列数直接相加;
当axis=None时,所有数据被展开到行,也就是“平面化处理”,输出结果是一行六列。
综上所述,axis=0,是在行上进行合并;axis=1,是在列上进行合并;axis=None,所有数据展开到行,之后再一同合并到行上。
基于此分析,进行代码测试。
【4】代码测试
新增三行两列数组f,进行组合测试:
f=np.array([[7,8],[9,10],[11,12]]) #定义数组f g=np.concatenate((a, f), axis=0) #组合数组a和b h=np.concatenate((a, f.T), axis=1) #组合数组a和b i=np.concatenate((a, f), axis=None) #组合数组a和b的展开数组 print('np.concatenate((a, f), axis=0)=\n',g) #输出组合数组a和f print('np.concatenate((a, f.T), axis=1)=\n',h) #输出组合数组a和f的转置数组 print('np.concatenate((a, f), axis=None)=\n',i) #输出组合数组a和f的展开数组
运行代码后的输出结果为:
g=np.concatenate((a, f), axis=0)=
[[ 1 2]
[ 3 4]
[ 7 8]
[ 9 10]
[11 12]]
h=np.concatenate((a, f.T), axis=1)=
[[ 1 2 7 9 11]
[ 3 4 8 10 12]]
i=np.concatenate((a, f), axis=None)=
[ 1 2 3 4 7 8 9 10 11 12]
可见:
axis=0时,对行数进行了相加;
axis=1时,对列数进行了相加;
axis=None时,所有数据展开到行后直接组合。
【5】总结
掌握了numpy.concatenate()函数组合数组的基本操作技巧。