您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

对numpy和pandas中数组的合并和拆分详解

5b51 2022/1/14 8:19:32 python 字数 3213 阅读 448 来源 www.jb51.cc/python

合并 numpy中 numpy中可以通过concatenate,指定参数axis=0或者axis=1,在纵轴和横轴上合并两个数组。

概述

合并

numpy中

numpy中可以通过concatenate,指定参数axis=0 或者 axis=1,在纵轴和横轴上合并两个数组。

import numpy as np
import pandas as pd
arr1=np.ones((3,5))
arr1
Out[5]: 
array([[ 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.    ],[-0.09666833,axis=1) #在横轴上合并
Out[10]: 
array([[ 1.,...,1.55410056]])
np.hstack([arr1,arr2]) # 水平 horizon 
np.vstack([arr1,arr2]) # 垂直 vertical 

pandas中

pandas中通过concat方法实现合并,指定参数axis=0 或者 axis=1,在纵轴和横轴上合并两个数组。与numpy不同,这里的两个dataframe要放在一个列表中,即[frame1,frame2]

from pandas import DataFrame
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]: 
  0  1  2
0  1  2  3
1  4  5  6
0  7  8  9
1 10 11 12
pd.concat([frame1,axis=1,ignore_index=True)
Out[27]: 
  0 1 2  3  4  5
0 1 2 3  7  8  9
1 4 5 6 10 11 12

拆分

认情况下,Numpy数组是按行优先顺序创建。在空间方面,这就意味着,对于一个二维数字,每行中的数据项是存放在内在中相邻的位置上的。另一种顺序是列优先。

由于历史原因,行优先和列优先又分别被称为C和Fortran顺序。在Numpy中,可以通过关键字参数order='C' 和order='F' 来实现行优先和列优先。

arr=np.arange(15).reshape(3,-1)
arr
Out[29]: 
array([[ 0,1,3,4],[ 5,6,7,12,13,14]])
arr.ravel('F') #按照列优先,扁平化。
Out[30]: array([ 0,10,4,9,14])
arr.ravel()
Out[31]: array([ 0,14])
arr.reshape((5,3),order='F') # Fortran 顺序
Out[32]: 
array([[ 0,8],13],[ 1,[ 6,14]])
 arr.reshape((5,order='C')
 Out[33]: 
array([[ 0,2],[ 3,5],[ 9,11],[12,14]])

以上这篇对numpy和pandas中数组的合并和拆分详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。

总结

以上是编程之家为你收集整理的对numpy和pandas中数组的合并和拆分详解全部内容,希望文章能够帮你解决对numpy和pandas中数组的合并和拆分详解所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶