1. 前言
在数据预处理过程中,经常需要拼接数据,到底是怎么拼的呢,下面分析一下。
2. concatenate函数
import numpy as np
vec1 = np.array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
])
vec2 = np.array([[2, 2, 2],
[2, 2, 2],
[2, 2, 2],
])
vec3 = np.array([[3, 3],
[3, 3],
[3, 3],
])
vec_all=np.concatenate([vec1,vec2,vec3],axis=1)
print(vec_all)
输出:
#输出:
[[1 1 1 1 2 2 2 3 3]
[1 1 1 1 2 2 2 3 3]
[1 1 1 1 2 2 2 3 3]]
得出结论,axis参数代表了是在行还是列上进行拼接,1代表列上,0代表行上。
3. np.newaxis
这个参数可以给一个向量增加一个维度,下面举个例子
import numpy as np
vec4 = np.array([4,4,4,4])
vec4=vec4[...,np.newaxis]
print(vec4)
输出:
#输出
[[4]
[4]
[4]
[4]]
从这可见,本来一维度数据,变为了二维
3. concatenate和np.newaxis混用
接下来,把两个操作合并一下,就可以产生一些厉害的效果,原来二维数据不能和一维拼接,现在有了np.newaxis,就可以了。
import numpy as np
vec1 = np.array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
])
vec2 = np.array([[2, 2, 2],
[2, 2, 2],
[2, 2, 2],
])
vec3 = np.array([[3, 3],
[3, 3],
[3, 3],
])
vec4 = np.array([4,4,4])
vec_all=np.concatenate([vec1,vec2,vec3,vec4[...,np.newaxis]],axis=1)
print(vec_all)
输出:
#输出
[[1 1 1 1 2 2 2 3 3 4]
[1 1 1 1 2 2 2 3 3 4]
[1 1 1 1 2 2 2 3 3 4]]
通过concatenate和np.newaxis混用,实现了不同维度数据的拼接