【数据分析之道-NumPy(六)】数组操作

news2024/11/24 9:30:59

在这里插入图片描述

文章目录

  • 专栏导读
  • 1、修改数组形状
    • reshape()
    • resize()
    • flatten()
    • ravel()
  • 2、翻转数组
    • transpose()
    • flip()
    • fliplr()
    • flipud()
  • 3、修改数组维度
    • newaxis()
    • squeeze()
  • 4、连接数组
    • concatenate()
    • stack()
    • hstack()、vstack()
  • 5、分割数组
    • split()
    • hsplit()
    • vsplit()
    • array_split()
  • 6、数组元素的添加和删除
    • append()
    • insert()
    • delete()

专栏导读

✍ 作者简介:i阿极,CSDN Python领域新星创作者,专注于分享python领域知识。

本文录入于《数据分析之道》,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。
订阅后,可以阅读《数据分析之道》中全部文章内容,包含python基础语法、数据结构和文件操作,科学计算,实现文件内容操作,实现数据可视化等等。
还可以订阅进阶篇《数据分析之术》,其包含数据分析方法论、数据挖掘算法原理、业务分析实战。
✍ 其他专栏:《数据分析案例》 ,《机器学习案例》

1、修改数组形状

Numpy提供了一些函数来修改数组的形状,包括:

函数描述
reshape()改变数组的形状,但不改变原数组。
resize()改变数组的形状,同时也改变原数组。
flatten()将多维数组变为一维数组。
ravel()将多维数组变为一维数组,但是返回的是原数组的视图。

reshape()

import numpy as np
a = np.arange(1, 10).reshape(3, 3)
print(a)

在这里插入图片描述

resize()

b = np.arange(1, 10).reshape(3, 3)
b.resize(1, 9)
print(b)

在这里插入图片描述

flatten()

c = np.arange(1, 10).reshape(3, 3)
d = c.flatten()
print(c)
print(d)

在这里插入图片描述

ravel()

e = np.arange(1, 10).reshape(3, 3)
f = e.ravel()
print(e) 
print(f)

在这里插入图片描述

2、翻转数组

Numpy提供了一些函数来翻转数组,包括:

函数描述
transpose()转置数组,行变为列,列变为行。
flip()沿某个轴翻转数组。
fliplr()左右翻转数组。
flipud()上下翻转数组。

transpose()

a = np.arange(1, 10).reshape(3, 3)
b = np.transpose(a)
print(a)
print(b)

在这里插入图片描述

flip()

c = np.arange(1, 10).reshape(3, 3)
d = np.flip(c)
print(c)
print(d)

在这里插入图片描述

fliplr()

e = np.arange(1, 10).reshape(3, 3)
f = np.fliplr(e)
print(e)
print(f)

在这里插入图片描述

flipud()

g = np.arange(1, 10).reshape(3, 3)
h = np.flipud(g)
print(g)
print(h)

3、修改数组维度

Numpy提供了一些函数来修改数组的维度,包括:

函数描述
newaxis增加数组维度。
squeeze()去掉数组中的一维。

newaxis()

a = np.array([1, 2, 3])
b = a[np.newaxis, :]
print(a)
print(b)

在这里插入图片描述

squeeze()

c = np.arange(1, 10).reshape(1, 3, 3, 1)
d = np.squeeze(c)
print(c.shape)
print(d.shape)

在这里插入图片描述

4、连接数组

Numpy提供了一些函数来连接数组,包括:

concatenate()沿着指定的轴连接相同形状的两个或多个数组。
stack()沿着新的轴连接数组序列。
hstack()水平堆叠序列中的数组(列方向)。
vstack()水平堆叠序列中的数组(行方向)。

concatenate()

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
c = np.concatenate((a, b), axis=0)

print(c)

在这里插入图片描述

stack()

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.stack((a, b))

print(c)

在这里插入图片描述

hstack()、vstack()

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.hstack((a, b))
d = np.vstack((a, b))

print(c)
print(d)

在这里插入图片描述

5、分割数组

函数描述
split()将一个数组分割为多个子数组,分割方式可以指定为沿着垂直方向(纵向)或水平方向(横向),并指定分割点。
hsplit()将一个数组水平分割成多个子数组。
vsplit()将一个数组垂直分割成多个子数组。
array_split()将一个数组按照指定的轴进行分割成多个子数组,轴数可以自定义。

split()

arr = np.arange(12).reshape(2, 6)
sub_arr1 = np.split(arr, 3, axis=1)#按照第二个轴(即横向)将数组分割成三个子数组
sub_arr2 = np.split(arr, 2, axis=0)#按照第二个轴(即纵向)将数组分割成二个子数组
print(arr,'\n')
print(sub_arr1,'\n')
print(sub_arr2)

在这里插入图片描述

hsplit()

arr = np.arange(12).reshape(2, 6)
sub_arr_hsplit = np.hsplit(arr, 2)# 将数组水平分割成两个子数组
print(sub_arr_hsplit)

在这里插入图片描述

vsplit()

arr = np.arange(12).reshape(2, 6)
sub_arr_vsplit = np.vsplit(arr, 2)# 将数组垂直分割成两个子数组
print(sub_arr_vsplit)

在这里插入图片描述

array_split()

arr = np.arange(12).reshape(2, 6)
sub_array_split = np.array_split(arr, 4, axis=1)# 按照第二个轴(即横向)将数组分割成四个子数组
print(sub_array_split)

在这里插入图片描述

6、数组元素的添加和删除

函数描述
append()用于在数组末尾添加值
insert()用于在指定位置插入元素
delete()用于删除数组中的元素

append()

numpy.append(arr, values, axis=None)

参数说明:

  • arr:输入的数组
  • values:要添加的值,可以是一个值或一个数组
  • axis:沿着哪个轴添加值,默认为 None,即在数组的一维拼接添加值。
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.append(a, b)

print(c) 

在这里插入图片描述

insert()

numpy.insert(arr, obj, values, axis=None)

参数说明:

  • arr:输入的数组
  • obj:要插入的位置,可以是一个整数或一个数组,表示要插入的位置
  • values:要插入的值,可以是一个值或一个数组
  • axis:沿着哪个轴插入值,默认为 None,即在数组的一维插入值。
a = np.array([1, 2, 3])
b = np.insert(a, 1, [4, 5])

print(b) 

在这里插入图片描述

delete()

numpy.delete(arr, obj, axis=None)

参数说明:

  • arr:输入的数组
  • obj:要删除的元素的索引或者一个数组,表示要删除哪些元素
  • axis:沿着哪个轴删除值,默认为 None,即在数组的一维删除值。
a = np.array([1, 2, 3, 4, 5])
b = np.delete(a, 2)

print(b)  

在这里插入图片描述


📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023学习软件测试,如何月薪过万?这几条必须具备

软件测试,如何月薪过万? 这个问题换做前几年的功能测试或许还有点小难。但如今以点点点为主的功能测试,即将被淘汰,适者生存的法则下,自动化测试如雨后春笋登上舞台。 同一时间,随着各大互联网公司迅速扩…

Carla仿真二:Carla多视图切换代码详解

文章目录前言一、Carla多视图切换效果二、Camera安装坐标系1、Carla.Location2、Carla.Rotation三、接口及代码详解1、接口介绍2、生成上帝视图代码3、生成Camera视图代码四、完整代码前言 1、Carla提供了大量的Python API接口,用户可以通过查找文档实现各类功能&a…

【前缀和】

目录知识框架No.0 筑基No.1 普通前缀和题目来源:牛客网-NC14556:数圈圈题目来源:牛客网-NC14600:珂朵莉与宇宙题目来源:牛客网-NC21195 :Kuangyeye and hamburgers题目来源:牛客网-NC19798&…

混合开发中h5前端离线打包规范流程

1、离线化的目的 首先在H5Native的混合开发实战中,让人头疼最多的恐怕就是网页加载过程中的白屏了,以及弱网、断网状态下h5页面无法正常加载的问题,那么为了解决这些问题,我们H5端跟原生端共同讨论采用Hybrid App离线加载方案&…

fiddler(抓包)的用法和HTTP 协议的基本格式

目录 fiddler(抓包)用法: HTTP 协议的基本格式 HTTP请求: 首行 认识HTTP方法 GET和POST的典型区别: 认识请求“报头”(header) HTTP 响应 HTTP状态码: 状态码的分类: 认识响应 …

SD-WAN基本介绍

一、SD-WAN是什么?它能为我们带来什么? SD-WAN,即软件定义广域网络,是将SDN技术应用到广域网场景中所形成的一种服务。这种服务用于连接广阔地理范围的企业网络、数据中心、互联网应用及云服务,旨在帮助用户降低广域网…

STL——array和vector容器

📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++阶段>——目标Windows,MySQL,Qt,数据结构与算法,Linux,多线程&…

解密HTTP协议:探索其组成部分与工作原理

前言 欢迎来到今天的每日一题,每日一提。昨天有聊到,HTTP 和 HTTPS 之间有什么区别?面试官基本秉承着刨根问题的原则,肯定是不会轻易放过我们的,那么自然是要继续拷问了。所以我们今天就聊聊什么是 HTTP,它…

微服务分布式搜索引擎 Elastic Search RestClient 操作文档

文章目录⛄引言一、初始化 Java RestClient二、RestClient 对文档的CRUD操作⛅新增文档⏰查询文档⚡修改文档⌚删除文档三、RestClient 批量文档导入⛵小结⛄引言 本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能…

SpringBoot整合XXL-JOB

XXL-JOB: 官网文档地址:分布式任务调度平台XXL-JOB GitHub地址:https://github.com/xuxueli/xxl-job Gitee地址:https://gitee.com/xuxueli0323/xxl-job 拉取代码,首先执行一下doc/db下的sql文件 tables_xxl_job.sq…

JAVA识别电子发票问题汇总

之前写的java解析电子发票,上线后出现了一下线上的问题,无法解析发票,对问题做个规整,仅供参考! 1. Pdfbox介绍 pdfbox是一款Apache的开源工具,可以进行对pdf进行操作,如题,转图片…

UE4C++学习篇(十九)-- 动画蒙太奇初级使用

用一个第三人称的射击案例来简单介绍一下动画蒙太奇的使用,动画蒙太奇的具体介绍这里就不多说了,不知道的小伙伴可以去搜一下了解。 这里介绍角色射击,射击的时候播放一个射击动画。 选中需要创建出动画蒙太奇的动画,点击创建&am…

物理服务器通过U盘安装CentOS 7操作系统

一、制作U盘启动盘 1、使用UltraISO工具打开需要安装的操作系统iso镜像文件(我安装的是CentOS-7-x86_64-Minimal-2009.iso),如下图所示 镜像下载地址:centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 2、将该系统镜像…

nginx--官方模块

目录 1.概述 2.Nginx的客户端状态 1.使用 2.目录中选择一个随机主页 3.http内容替换 ​编辑 4.nginx请求限制 5.nginx访问控制 1.基于Ip的访问控制 1.1使用 1.2access_mod.conf 1.3只允许自己ip访问 1.4http_x_forwarded_for 1.5http_access_module局限性 2.基于…

【用python将文件夹下面的文件夹里面的文件全部提取出来,并且放到一个新的文件夹】

文件里面有多个文件,每个文件下面有很多jpg格式的照片,把所有照片提取出来并且放在一个新的文件夹下面。 可以使用Python的os和shutil库来完成这个任务。 比如说:我的faces95文件夹下面有95个文件,每个文件下面有十七到十八个照片…

深拷贝和浅拷贝

目录 一.Java的Cloneable和clone()方法 1.Object类中的clone() 2.实现Cloneable接口的类 3.通过clone()生成对象的特点 二.深拷贝和浅拷贝 1.浅拷贝 2.深拷贝 3.实现深拷贝的两种方法 1.一种是递归的进行拷贝 2.Json字符串的方式进行深拷贝 一.Java的Cloneable和clone…

No.037<软考>《(高项)备考大全》【第21章】项目组合管理

【第21章】项目组合管理1 考试相关2 项目组合管理2.1 项目组合管理、项目集管理、项目管理异同2.2 项目组合管理过程组3 练习题参考答案1 考试相关 选择1分必考 案例概率低,知识点看一遍即可 2 项目组合管理 1、项目组合是将项目、项目集,以及其他方面…

2023年MathorCup数学建模赛题浅析

MathorCup俗称妈杯,是除了美赛国赛外参赛人数首屈一指的比赛,而我们的妈杯今天也如期开赛。今年的妈杯难度,至少在我看来应该是2023年截至目前来讲最难的一场比赛。问题的设置、背景的选取等各个方面都吐露着我要难死你们的想法。难度是恒定的…

Servlet、SpringMVC、SpringBoot整合Thymeleaf汇总

介绍 模板引擎,与JSP、JSTL类似。 好处是:直接写在HTML文件中,服务器可以解析,浏览器也可以解析,实现了动静分离,并未破坏html结构,即使无网络、不通过后端渲染也能在浏览器成功打开&#xff…

kettle——数据清洗(数据表-->文本文件)

实验步骤: 1.数据表(图片加分析,创建表的过程和对应的字段及记录) ①选择数据库 ②创建表结构 ③插入数据 2.kettle连接模块(图片加分析,每个模块实现的功能) ①新建“转换”文件,”文件”——>“新建…