对numpy和pandas中数组的合并和拆分详解
合并
numpy中
numpy中可以通过concatenate,指定参数axis=0或者axis=1,在纵轴和横轴上合并两个数组。
importnumpyasnp importpandasaspd arr1=np.ones((3,5)) arr1 Out[5]: array([[1.,1.,1.,1.,1.], [1.,1.,1.,1.,1.], [1.,1.,1.,1.,1.]]) arr2=np.random.randn(15).reshape(arr1.shape) arr2 Out[8]: array([[-0.09666833,1.47064828,-1.94608976,0.2651279,-0.32894787], [1.01187699,0.39171167,1.49607091,0.79216196,0.33246644], [1.71266238,0.86650837,0.77830394,-0.90519422,1.55410056]]) np.concatenate([arr1,arr2],axis=0)#在纵轴上合并 Out[9]: array([[1.,1.,1.,1.,1.], [1.,1.,1.,1.,1.], [1.,1.,1.,1.,1.], [-0.09666833,1.47064828,-1.94608976,0.2651279,-0.32894787], [1.01187699,0.39171167,1.49607091,0.79216196,0.33246644], [1.71266238,0.86650837,0.77830394,-0.90519422,1.55410056]]) np.concatenate([arr1,arr2],axis=1)#在横轴上合并 Out[10]: array([[1.,1.,1.,...,-1.94608976, 0.2651279,-0.32894787], [1.,1.,1.,...,1.49607091, 0.79216196,0.33246644], [1.,1.,1.,...,0.77830394, -0.90519422,1.55410056]]) np.hstack([arr1,arr2])#水平horizon np.vstack([arr1,arr2])#垂直vertical
pandas中
pandas中通过concat方法实现合并,指定参数axis=0或者axis=1,在纵轴和横轴上合并两个数组。与numpy不同,这里的两个dataframe要放在一个列表中,即[frame1,frame2]
frompandasimportDataFrame frame1=DataFrame([[1,2,3],[4,5,6]]) frame2=DataFrame([[7,8,9],[10,11,12]]) pd.concat([frame1,frame2],ignore_index=True)#合并的数组是一个可迭代的列表。 Out[25]: 012 0123 1456 0789 1101112 pd.concat([frame1,frame2],axis=1,ignore_index=True) Out[27]: 012345 0123789 1456101112
拆分
默认情况下,Numpy数组是按行优先顺序创建。在空间方面,这就意味着,对于一个二维数字,每行中的数据项是存放在内在中相邻的位置上的。另一种顺序是列优先。
由于历史原因,行优先和列优先又分别被称为C和Fortran顺序。在Numpy中,可以通过关键字参数order='C'和order='F'来实现行优先和列优先。
arr=np.arange(15).reshape(3,-1) arr Out[29]: array([[0,1,2,3,4], [5,6,7,8,9], [10,11,12,13,14]]) arr.ravel('F')#按照列优先,扁平化。 Out[30]:array([0,5,10,...,4,9,14]) arr.ravel() Out[31]:array([0,1,2,...,12,13,14]) arr.reshape((5,3),order='F')#Fortran顺序 Out[32]: array([[0,11,8], [5,2,13], [10,7,4], [1,12,9], [6,3,14]]) arr.reshape((5,3),order='C') Out[33]: array([[0,1,2], [3,4,5], [6,7,8], [9,10,11], [12,13,14]])
以上这篇对numpy和pandas中数组的合并和拆分详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。