numpy的concatenate函数和np.newaxis

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混用,实现了不同维度数据的拼接

猜你喜欢

转载自blog.csdn.net/weixin_52514564/article/details/129283406