【Python学习记录】numpy数组用法整理

news2024/11/24 12:48:13

✨ 博客主页:小小马车夫的主页
✨ 所属专栏:Python学习记录

请添加图片描述

文章目录

  • 前言
  • 一、numpy数组创建
    • 1、numpy.array创建数组
    • 2、从已有数组中创建数组
  • 二、numpy创建数组初始化
    • 1、numpy.zero
    • 2、numpy.ones
    • 3、numpy.arange
    • 4、numpy.linspace
    • 5、numpy.random
  • 三、numpy类型转换和形状改变
    • 1、数据类型转换
    • 2、形状改变
  • 四、numpy数组获取元素
    • 1、获取一个元素
    • 2、获取一行
    • 3、获取一列
  • 五、numpy数组基本运算
    • 1、四则运算
    • 2、点乘运算dot
    • 3、矩阵乘法@ matmul
    • 4、求平方根
    • 5、三角函数
    • 6、对数和指数运算
    • 7、与一个数作运算 (广播)
    • 8、不同尺寸的数组也可以直接作运算 (广播)
    • 9、求数组最大值、最小值
    • 10、求数组最小值、最大值元素所在的索引
    • 11、求和、平均数、方差、标准差
    • 12、指定维度
  • 总结


前言

numpy是python中一个科学计算的库,由于底层是C语言实现,极大提高运算性能,本文主要对numpy数组作一个系统介绍,以供自己和一些初学者参考和复习。

一、numpy数组创建

1、numpy.array创建数组

numpy.array可以创建一维、二维甚至任意维数据。

>>> a  = np.array([
...     [1, 2, 3],
...     [4, 5, 6],
...     [7, 8, 9]
... ])
>>> a.shape
(3, 3)
>>> a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

2、从已有数组中创建数组

numpy.asarray可以从已有数组创建数组。

>>> b = np.asarray(a, dtype=np.float32)
>>> b.shape
(3, 3)
>>> b.dtype
dtype('float32')
>>> b
array([[1., 2., 3.],
       [4., 5., 6.],
       [7., 8., 9.]], dtype=float32)

二、numpy创建数组初始化

1、numpy.zero

np.zeros((3,2))
array([[0., 0.],
       [0., 0.],
       [0., 0.]])

(3,2)代表一个三行二列的数组

2、numpy.ones

np.ones((2, 4))
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.]])

3、numpy.arange

numpy.arange创建某一范围内的数组。

np.arange(3, 7)
array([3, 4, 5, 6])

4、numpy.linspace

numpy.linspace返回两个参数区间范围内等间距的数。

np.linspace(0, 1, 5)
array([0.  , 0.25, 0.5 , 0.75, 1.  ])

5、numpy.random

numpy.random生成一个随机的数组。

np.random.rand(2, 4)
array([[0.74471957, 0.00958814, 0.03729488, 0.41100284],
       [0.74790347, 0.256831  , 0.48457024, 0.39946753]])

三、numpy类型转换和形状改变

1、数据类型转换

#a.dtype 默认数据类型是float64
>>> a = np.zeros((3,2))
>>> a.dtype
dtype('float64')

#初始化时指定数据类型
>>> a = np.zeros((3,2), dtype=np.int32)
>>> a.dtype
dtype('int32')

#转换数据类型
b = a.astype(int)
>>> b = a.astype(int)
>>> b.dtype
dtype('int64')

2、形状改变

>>> a = np.arange(20)
>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19])
>>> a.shape
(20,)
>>> a.reshape(4, 5)
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

四、numpy数组获取元素

1、获取一个元素

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

2、获取一行

代码承接四.1

>>> a[0,:]
array([1, 2, 3])
>>> a[0]
array([1, 2, 3])

3、获取一列

>>> a[:,0]
array([1, 4])

五、numpy数组基本运算

1、四则运算

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
>>> a + b
array([5, 7, 9])
>>> a / b
array([0.25, 0.4 , 0.5 ])

2、点乘运算dot

>>> np.dot(a, b)
32

3、矩阵乘法@ matmul

a = np.array([[1,2],[3, 4]])
b = np.array([[2, 0], [0, 2]])
>>> a @ b
array([[2, 4],
       [6, 8]])

@符等同于numpy.matnul

4、求平方根

a  = np.array([1, 2, 3])
>>> np.sqrt(a)
array([1.        , 1.41421356, 1.73205081])

5、三角函数

a = np.array([1, 2, 3])
np.sin(a)
np.cos(a)
>>> np.sin(a)
array([0.84147098, 0.90929743, 0.14112001])
>>> np.cos(a)
array([ 0.54030231, -0.41614684, -0.9899925 ])

6、对数和指数运算

a = np.array([1, 2, 3])
>>> np.log(a)
array([0.        , 0.69314718, 1.09861229])
>>> np.power(a, 2)
array([1, 4, 9])

7、与一个数作运算 (广播)

>>> a * 5
array([ 5, 10, 15])

8、不同尺寸的数组也可以直接作运算 (广播)

a = np.array([[1],
	[10],
	[20]
])
b = np.array([0, 1, 2])
>>> a + b
array([[ 1,  2,  3],
       [10, 11, 12],
       [20, 21, 22]])

在做运算之前,numpy会将这两个数组扩展至相同的尺寸,然后再将同位置的元素相加
numpy 广播

9、求数组最大值、最小值

>>> a = np.array([1, 2, 3, 4, 5])
>>> a.min()
1
>>> a.max()
5
>>> 

10、求数组最小值、最大值元素所在的索引

>>> a = np.array([1, 2, 3, 4, 5])
>>> a.argmin()
0
>>> a.argmax()
4
>>> 

11、求和、平均数、方差、标准差

a = np.array([1, 2, 3, 4, 5])
>>> a.sum()
15
>>> a.mean()
3.0
>>> a.var()
2.0
>>> a.std()
1.4142135623730951

12、指定维度

大多数操作都可以指定维度,具体如下:

a = np.array([[1, 2, 3, 4, 5],
		[5, 6, 7, 8, 9]])
>>> a.sum(axis=0)
array([ 6,  8, 10, 12, 14])
>>> a.sum(axis=1)
array([15, 35])
>>> a.sum()
50
>>> 

总结

以上是本文的主要内容了,主要从numpy数组创建、初始化、获取形状和改变形状、获取元素,最后详细介绍了numpy支持的各种基本运算。


如果觉得有些帮助或觉得文章还不错,请关注一下博主,你的关注是我持续写作的动力。另外,如果有什么问题,可以在评论区留言,或者私信博主,博主看到后会第一时间进行回复。
【间歇性的努力和蒙混过日子,都是对之前努力的清零】
欢迎转载,转载请注明出处:https://blog.csdn.net/xxm524/article/details/128255891

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

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

相关文章

Mentor-dft 学习笔记 day44-Low-Power Design Test

Low-Power Testing Overview Tessent Scan支持启用低功耗测试的操作。 •在存在孤立cell的情况下插入专用包装cell。 •根据驱动的逻辑和电源域的优先级将专用包装单元分配给电源域。 低功耗设计流程包括以下步骤: 1.在CPF/UPF文件中指定低功耗数据规范。 2.在设计…

[附源码]计算机毕业设计Python的校园报修平台(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

RequestResponse

Request Request继承体系 Request获取请求数据 获取请求数据 通用方式获取请求参数 WebServlet("/req1") public class req1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOE…

电脑怎么隐藏文件夹?6个步骤完成!

在日常办公使用电脑的过程中,总会出现各种问题。比如:电脑怎么隐藏文件夹?当我们需要这些数据时,我们又该如何恢复?为了解决这些问题,小编在这里总结了6个操作步骤来隐藏文件夹数据的方法。让我们一起来看看…

【代码随想录】Day34链表:力扣203,707,206,142,面试0207

目录 基本知识 概念、类型、存储方式: 定义 操作 性能分析 经典方法 虚拟头结点 思路 例题:力扣203 链表的基本操作 思路 例题:力扣707 反转链表 思路 例题:力扣206 删除倒数第N个结点 思路: 例题&am…

jsp+ssm计算机毕业设计-东湖社区志愿者管理平台【附源码】

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JSPSSM mybatis Maven等等组成,B/S模式 Mave…

[附源码]计算机毕业设计Python的在线作业批改系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

tomcat 服务突然停止、日志排查以及解决方案

文章目录一、服务停止调研1. jvm排查2. 日志排查3. 推测与ssh会话有关二、ssh会话强制退出验证2.1. 手动强制关闭进程12.2. 手动强制关闭进程22.3. 总结归纳与解决方案一、服务停止调研 1. jvm排查 有可能是jvm配置参数导致的,然后在/var/log和/app/apache-tomcat…

2022 软件测试大题【太原理工大学】

大题应该是有两道,每道10分,具体是不是我也不知道,老师也不确定。① 白盒测试 —— 控制流图,给出一段代码,画出控制流图,根据公式求程序段的环形复杂度,求程序基本路径集合中的独立路径&#x…

永磁同步电机(PMSM)磁场定向控制(FOC)电流环PI调节器参数整定

文章目录前言一、调节器的工程设计方法二、电流环PI调节器的参数整定2.1.电流环的结构框图2.2.典型I型系统2.3.电流环PI参数整定计算公式三、电流环PI调节器设计实例3.1.永磁同步电机磁场定向的电流闭环控制3.2.电流环PI参数计算3.3.仿真分析总结前言 本章节采用工程设计的方法…

CommaFeed:仿Google Readerd的RSS阅读器

最近老苏身边中招的人也开始多起来了,大家要保重~ 本文开始于 9 月下旬,完成于 10 月下旬,目前正式版本还是老苏打包时用的 2.6.0,不过现在已经有了 3.0.0 RC1 什么是 CommaFeed ? CommaFeed 是受 Google Reader 启发而…

CS144-Lab0解析

讲在开头 cs144建议我们使用Modern C来完成所有的lab,关于modern c的全面的用法可以在(http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)获取。 以下是一些代码规范: 不要使用malloc()和free()不要使用new和delete在不得不使用指针时应…

如何自动估算项目开发成本及报价,提高估算效率?

项目估算需要有科学专业的估算方法,需要有明确的量化指标,那么如何自动估算项目开发成本及报价? 第一步:功能点复杂程度的估算 CoCode需求分析工具,根据用户需求,使用COSMIC和IFPUG项目规模估算法&#xff…

数据结构C语言版 —— 队列+循环队列实现

文章目录队列1.概念2. 生活中队列应用3. 队列的实现初始化队列入队列出队列获取队头元素获取队尾元素获取队列中元素个数判断队列是否为空销毁队列2. 循环队列队列 1.概念 和栈相反,队列(queue)是一种先进先出的线性表,它只允许在一端进行插入&#xf…

C#-winform调用COM组件(COM组件由Qt开发)

一、场景介绍 在项目开发中,需要Qt与C#进行混合编程,完成项目开发。C#这边作为主框架,Qt负责编写插件,将功能模块通过COM组件的形式封装注册,再由C#调用、交互完成最终的项目。 程序开发环境: win10 64位 编译器: VS2017 Qt版本: Qt5.12.6 二、Qt封装COM组件 2.1 环境…

android flutter 安装

下载 flutter官网下载安装:https://flutter.dev/docs/development/tools/sdk/releases 将下载下来的zip安装包解压到想安装Flutter SDK的路径。注意,不要将flutter安装到需要一些高权限的路径,比如C:\Program Files\ 配置环境变量 添加fl…

案例教学 | 如何确定ADAMS简化模型的准确性,以及简化模型精度不够怎么办?

仿真建模过程中不可避免地对各种复杂元素进行简化处理。这种建模思路的终极目标是不牺牲仿真精度、还提升仿真效率。在Adams仿真建模过程中也有一些常见的简化方式,如非线性元素按线性建模、不考虑摩擦力、通过耦合约束等效传动关系等等。应用简化建模之前&#xff…

蓝桥杯有必要参赛吗?

昨天和群里的小伙伴在群里聊,有的小伙伴竟然说蓝桥杯一等奖没有含量,我也是醉了! 就像去年看了一个号主写的:研究生遍地都是! 放眼全国14亿人口,别说研究生了,本科生占比有多少? “蓝桥杯是我人生中得到…

多态性:中的向下转型,instanceof 操作符的使用

多态性:中的向下转型,instanceof 操作符的使用 每博一文案 都说树叶不是一天变黄的,人心也不是一天变凉的,每一个现在的自己,其实都是过去的自己拼凑的。 如今我们的气质里都藏着过去走过的路,看过的书和爱…

混合模式和预乘原理的理解

首先说到混合模式,简单理解,混合模式就是同一像素上有两个颜色需要混合成一个使用的模式。 这里的两个像素点,我们把原先已经存在的,也就是下面的像素点颜色定义为目标颜色。把新加上来的,也就是上面的像素点颜色定义为…