合并—numpy,pandas,pytorch,tensorflow

一:numpy

1.np.vstack()?

上下合并,对括号中的两个整体进行对应操作。

np.vstack().jpg

2.np.hstack()

左右合并,对括号中的两个整体进行对应操作。

np.hstack().jpg

3.np.concatenate()

你合并操作需要针对多个矩阵或序列时,借助concatenate函数。

axis参数很好的控制了矩阵的纵向或是横向打印。axis=0表示列合并,axis=1表示行合并。

np.concatenate().jpg

二:pandas

1.pd.concat()

(1)axis (合并方向)

函数默认axis=0,为列合并。

axis .jpg

(2)ignore_index (重置 index)

合并之后重置index,结果的index变0, 1, 2, 3, 4, 5, 6, 7, 8。

ignore_index.jpg

(3)join (合并方式)

函数默认join='outer'。此方式是依照column来做纵向合并,有相同的column上下合并在一起,其他独自的column个自成列,原本没有值的位置皆以NaN填充。

join='outer'

.jpg

join='inner',只有相同的column合并在一起,其他的会被抛弃。

join='inner'.jpg

(4)join_axes (依照 axes 合并)?

join_axes.jpg

2.pd.append()

append只有纵向合并,没有横向合并。

pd.append().jpg

3.pd.merge()

pandas中的merge和concat类似,但主要是用于两组有key column的数据,统一索引的数据. 通常也被用在Database的处理当中。

(1)依据一组key合并

一组key合并.jpg

(2)依据两组key合并?

合并时有4种方法how = ['left', 'right', 'outer', 'inner'],预设值how='inner'。

两组key合并.jpg

三:pytorch

1.torch.Cat()

dim=0,列上合并。dim=1,行上合并。

定义.jpg

dtype=torch.float,不然会报错

输出.jpg

2.torch.stack()

定义.jpg

dim=0

定义.jpg

输出了d1的第2,1,0维元素,我们可以清楚的看到当dim=0时候,torch.stack类似于torch.cat。我们可以看出,dim=0的作用其实就是把所有的d[i]拼接在了一起。简单的说,将A,B,C垂直拼接。

dim=0.jpg

dim=1

dim=1.jpg

dim=1的作用其实就是把ABC的d[i][i]拼接在了一起。也就是说将每个张量的相同位置的行向量拼接在一起。如A[1],B[1],C[1]=[4,5,6],[40,50,60],[400,500,600]

dim=2

dim=2,jpg

dim=2的作用其实就是把ABC的d[i][i][i]拼接在了一起。即将A,B,C三个张量的相同位置的元素拼接在一起。如A[1][1],B[1][1],C[1][1]=5,50,500

四:tensorflow

1.tf.concat()

tf.concat.jpg

tf.random.normal生成的是3维张量,[4,35,8]指每维度对应的个数。axis=0指对第一个维度即4和6进行合并,合并后shape为[10,35,8]。当二维时axis=0,axis=1即等于列,行合并。合并操作可以在任意的维度上进行,唯一的约束是非合并维度的长度必须一致。

2.tf.stack()

tf.concat 直接在现有维度上面合并数据,并不会创建新的维度。如果在合并数据时,希望创建一个新的维度,则需要使用tf.stack 。

tf.stack(),jpg

axis=0指新维度在原维度之前,合并后shape为[2,35,8],2指两个张量合并。tf.stack 也需要满足张量堆叠合并条件,它需要所有合并的张量shape 完全一致才可合并。

axis决定插入位置,具体如下。

插入位置.jpg