numpy和pandas中数组的合并、拉直和重塑实例
作者:jran_ml 发布时间:2022-06-28 02:55:07
标签:numpy,pandas,合并,拉直,重塑
合并
在numpy中合并两个array
numpy中可以通过concatenate,参数axis=0表示在垂直方向上合并两个数组,等价于np.vstack;参数axis=1表示在水平方向上合并两个数组,等价于np.hstack。
垂直方向:
np.concatenate([arr1,arr2],axis=0)
np.vstack([arr1,arr2])
水平方向:
np.concatenate([arr1,arr2],axis=1)
np.hstack([arr1,arr2])
import numpy as np
import pandas as pd
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]])
在pandas中合并两个DataFrame
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,frame2], 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
拉直和重塑
拉直即把一个二维的array变成一个一维的array。默认情况下,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('C') # 默认顺序。#按照行优先,扁平化。
Out[31]: array([ 0, 1, 2, ..., 12, 13, 14])
重塑:
Fortran顺序重塑后按列拉直和原数据按列拉直一样。
arr.reshape((5,3),order='F')
Out[32]:
array([[ 0, 11, 8],
[ 5, 2, 13],
[10, 7, 4],
[ 1, 12, 9],
[ 6, 3, 14]])
C顺序重塑后按行拉直和原数据按行拉直一样。
arr.reshape((5,3),order='C')
Out[33]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
来源:https://blog.csdn.net/zhanshirj/article/details/73302401


猜你喜欢
- 1,IE使用attachEvent/detachEvent方法来添加和删除事件 * ;w3c使用addEventListener/remov
- 本篇博客参考Keqi Zhang的文章“A Progressive Morphological Filter for Removing No
- 需要写个js滑动展开折叠(收缩)的效果,搜索到无忧脚本的一篇贴子,稍加修改了下使其在FF也可应用,代码如下: <
- 从今天起,我将陆续将 ppk on JavaScript 的读书心得发布到这个blog上。ppk是我所景仰的一位web开发者,原因无它,只是
- 电脑安装git客户端、注册github账号并登陆到本地项目文件夹右键选择git bash here输入个人信息(代码提交者)git conf
- 问题: jsp中想要输出的中文被显示成“?” 解决方法 : 在eclipse-windows- preferences中 搜索jsp , E
- 方法一.Image { max-width:600px;height:
- 本文主要介绍的是关于微信小程序利用co处理异步流程的方法教程,分享出来供大家参考学习,需要的朋友们下面来看看详细的介绍:coco是一个基于E
- 操作系统:Ubuntu 17.04 64位MySQL版本:MySQL 5.7一、查看3306端口是否开放netstat -an|grep 3
- 本文介绍了python+opencv像素的加减和加权操作的实现,分享给大家。# 目标:# 1、在图像上进行算术操作,如加减以及按位操作# 2
- 临时对象池 pool 是啥?sync.Pool 给了一大段注释来说明 pool 是啥,我们看看这段都说了些什么。临时对象池是一些可以分别存储
- 本文实例讲述了Python进程间通信Queue消息队列用法。分享给大家供大家参考,具体如下:进程间通信-QueueProcess之间有时需要
- 学过 Python 的朋友应该都知道 f-strings 是用来非常方便的格式化输出的,觉得它的使用方法无外乎就是 print(f'
- 实例如下所示:# -*- coding: utf-8 -*-"""使用通配符,获取所有文件,或进行操作。&qu
- 首先先安装好我们的Python 这里就不多介绍了1.打开python.exe:点击File 下的小扳手图标 Settings…2.打开设置界
- 在运行这样类似的代码:#!/usr/bin/env pythons="中文"print s最近经常遇到这样的问题:问题一
- 关于conda安装matplotlib报错最近在师姐机器上跑实验的时候,想利用matplotlib包来绘制损失曲线图,安装过程中碰到了一些小
- 今天看到了mlxtend的包,看了下example集成得非常简洁。还有一个吸引我的地方是自带了一些data直接可以用,省去了自己造数据或者找
- 在使用tp5时候把它部署到服务器上发现一个奇葩的事情,就是它默认访问config配置的默认页,无论怎么跳转到其他接口都不好使,最终重写了&n
- 1.每个客户端连接都会从服务器进程中分到一个属于它的线程。而该连接的相应查询都都会通过该线程处理。2.服务器会缓存线程。因此并不会为每个新连