【Python入门】NumPy 入门知识介绍,看这一篇足矣

news2024/11/17 18:26:07

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

什么是 NumPy?

NumPy 是用于处理数组的 python 库。

它还拥有在线性代数、傅立叶变换和矩阵领域中工作的函数。

NumPy 由 Travis Oliphant 于 2005 年创建。它是一个开源项目,你可以自由使用它。

NumPy 指的是数值 Python(Numerical Python)。

为何使用 NumPy?

在 Python 中,我们有满足数组功能的列表,但是处理起来很慢。

NumPy 旨在提供一个比传统 Python 列表快 50 倍的数组对象。

NumPy 中的数组对象称为 ndarray,它提供了许多支持函数,使得利用 ndarray 非常容易。

数组在数据科学中非常常用,因为速度和资源非常重要。

数据科学:计算机科学的一个分支,研究如何存储、使用和分析数据以从中获取信息。

为什么 NumPy 比列表快?

与列表不同,NumPy 数组存储在内存中的一个连续位置,因此进程可以非常有效地访问和操纵它们。

这种行为在计算机科学中称为引用的局部性。

这是 NumPy 比列表更快的主要原因。它还经过了优化,可与最新的 CPU 体系结构一同使用。

NumPy 用哪种语言编写?

NumPy 是一个 Python 库,部分用 Python 编写,但是大多数需要快速计算的部分都是用 C 或 C ++ 编写的。

NumPy 代码库在哪里?

NumPy 的源代码位于这个 github 资料库中:https://github.com/numpy/numpy

github:使许多人可以在同一代码库上工作。

安装 NumPy

如果你已经在系统上安装了 Python 和 PIP,那么安装 NumPy 非常容易。

请使用这条命令安装它:

C:\Users\Your Name>pip install numpy

如果此命令失败,请使用已经安装了 NumPy 的 python 发行版,例如 Anaconda、Spyder 等。

导入 NumPy

安装 NumPy 后,通过添加 import 关键字将其导入您的应用程序:

import numpy

现在,Numpy 已导入并可以使用。

实例

import numpy 

arr = numpy.array([1, 2, 3, 4, 5]) 

print(arr)

运行实例

NumPy as np

NumPy 通常以 np 别名导入。

别名:在 Python 中,别名是用于引用同一事物的替代名称。

请在导入时使用 as 关键字创建别名:

import numpy as np

现在,可以将 NumPy 包称为 np 而不是 numpy。

实例

import numpy as np 

arr = np.array([1, 2, 3, 4, 5]) 

print(arr)

运行实例

检查 NumPy 版本

版本字符串存储在 version 属性中

实例

import numpy as np

print(np.__version__)

运行实例

创建 NumPy ndarray 对象

NumPy 用于处理数组,NumPy 中的数组对象称为 ndarray。

我们可以使用 array() 函数创建一个 NumPy ndarray 对象。

实例

import numpy as np 

arr = np.array([1, 2, 3, 4, 5])

print(arr)

print(type(arr))

运行实例

type(): 这个内置的 Python 函数告诉我们传递给它的对象的类型。像上面的代码一样,它表明 arr 是 numpy.ndarray 类型。

要创建 ndarray,我们可以将列表、元组或任何类似数组的对象传递给 array() 方法,然后它将被转换为 ndarray:

实例

使用元组创建 NumPy 数组:

import numpy as np 

arr = np.array((1, 2, 3, 4, 5))

print(arr)

运行实例

数组中的维

数组中的维是数组深度(嵌套数组)的一个级别

嵌套数组:

指的是将数组作为元素的数组。

0-D 数组

0-D 数组,或标量(Scalars),是数组中的元素。数组中的每个值都是一个 0-D 数组。

实例

用值 61 创建 0-D 数组:

import numpy as np

arr = np.array(61)

print(arr)

运行实例

1-D 数组

其元素为 0-D 数组的数组,称为一维或 1-D 数组。

这是最常见和基础的数组

实例

创建包含值 1、2、3、4、5、6 的 1-D 数组:

import numpy as np

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

print(arr)

运行实例

2-D 数组

其元素为 1-D 数组的数组,称为 2-D 数组。

它们通常用于表示矩阵或二阶张量。

NumPy 有一个专门用于矩阵运算的完整子模块 numpy.mat。

实例

创建包含值 1、2、3 和 4、5、6 两个数组的 2-D 数组:

import numpy as np

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

print(arr)

运行实例

3-D 数组

其元素为 2-D 数组的数组,称为 3-D 数组。

实例

用两个 2-D 数组创建一个 3-D 数组,这两个数组均包含值 1、2、3 和 4、5、6 的两个数组:

import numpy as np

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

print(arr)

运行实例

检查维数?

NumPy 数组提供了 ndim 属性,该属性返回一个整数,该整数会告诉我们数组有多少维。

实例

检查数组有多少维:

import numpy as np

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

print(a.ndim) 
print(b.ndim) 
print(c.ndim) 
print(d.ndim)

运行实例

更高维的数组

数组可以拥有任意数量的维。

在创建数组时,可以使用 ndmin 参数定义维数。

实例

创建一个有 5 个维度的数组,并验证它拥有 5 个维度:

import numpy as np

arr = np.array([1, 2, 3, 4], ndmin=5)

print(arr)
print('number of dimensions :', arr.ndim)

运行实例

在此数组中,最里面的维度(第 5 个 dim)有 4 个元素,第 4 个 dim 有 1 个元素作为向量,第 3 个 dim 具有 1 个元素是与向量的矩阵,第 2 个 dim 有 1 个元素是 3D 数组,而第 1 个 dim 有 1 个元素,该元素是 4D 数组。

访问数组元素

数组索引等同于访问数组元素。

可以通过引用其索引号来访问数组元素。

NumPy 数组中的索引以 0 开头,这意味着第一个元素的索引为 0,第二个元素的索引为 1,以此类推。

实例

从以下数组中获取第一个元素:

import numpy as np

arr = np.array([1, 2, 3, 4])

print(arr[0])

运行实例

实例

从以下数组中获取第二个元素:

import numpy as np

arr = np.array([1, 2, 3, 4])

print(arr[1])

运行实例

实例

从以下数组中获取第三和第四个元素并将其相加:

import numpy as np

arr = np.array([1, 2, 3, 4])

print(arr[2] + arr[3])

运行实例

访问 2-D 数组

要访问二维数组中的元素,我们可以使用逗号分隔的整数表示元素的维数和索引。

实例

访问第一维中的第二个元素:

import numpy as np

arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])

print('2nd element on 1st dim: ', arr[0, 1])

运行实例

实例

访问第二维中的第五个元素:

import numpy as np

arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])

print('5th element on 2nd dim: ', arr[1, 4])

运行实例

访问 3-D 数组

要访问 3-D 数组中的元素,我们可以使用逗号分隔的整数来表示元素的维数和索引。

实例

访问第一个数组的第二个数组的第三个元素:

import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

print(arr[0, 1, 2])

运行实例

=

例子解释

arr[0, 1, 2] 打印值 6。

工作原理:

第一个数字代表第一个维度,其中包含两个数组:

[[1, 2, 3], [4, 5, 6]]

然后:

[[7, 8, 9], [10, 11, 12]]

由于我们选择了 0,所以剩下第一个数组:

[[1, 2, 3], [4, 5, 6]]

第二个数字代表第二维,它也包含两个数组:

[1, 2, 3]

然后:

[4, 5, 6]

因为我们选择了 1,所以剩下第二个数组:

[4, 5, 6]

第三个数字代表第三维,其中包含三个值:

4
5
6

由于我们选择了 2,因此最终得到第三个值:

6

负索引

使用负索引从尾开始访问数组

实例

打印第二个维中的的最后一个元素

import numpy as np

arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])

print('Last element from 2nd dim: ', arr[1, -1])

运行实例

尾语 💝

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

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

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

相关文章

SAP 性能监控工具

SAP 体系结构可能很复杂,因为它由许多不同的元素和多层应用程序组成。每个元素都必须以最佳方式执行,以确保响应迅速且可靠的服务级别。管理如此复杂的系统可能非常艰巨,这就是为什么使用强大的SAP监控工具绝对必要的原因。 什么是 SAP 监控 …

安装autogpt中出现的问题及安装autogpt的小白教程

ImportError: DLL load failed while importing numpy_ops: The specified module could not be found 解决方案:Latest supported Visual C Redistributable downloads | Microsoft Learn 安装一下这个软件即可, 要安装 Auto-GPT,请按照下…

【Operating Systems:Three Easy Pieces 操作系统导论 】 4 ~ 6 章 (进程 | 进程 API | 受限直接执行)

【读书笔记】 Operating Systems:Three Easy Pieces 操作系统导论 第四章、 抽象 : 进程 4.1 什么是进程 ? 操作系统为正在运行的程序提供的抽象进程可以访问的内存(称为地址空间,address space) 是该进程的一部分。进程的机器…

python+nodejs+ssm+vue 基于协同过滤的旅游推荐系统

本文首先介绍了旅游推荐的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及…

WPF教程(八)--数据绑定(1)

使用WPF可以很方便的设计出强大的用户界面,同时 WPF提供了数据绑定功能。WPF的数据绑定跟Winform与ASP.NET中的数据绑定功能类似,但也有所不同,在 WPF中以通过后台代码绑定、前台XAML中进行绑定,或者两者组合的方式进行数据绑定。…

VUE基本使用详解

目录 一、VUE框架原理 1. 了解VUE框架 2. VUE框架原理 3. MVC设计模式 4. MVVM设计模式 二、引入VUE框架 1. 本地引入 2. 网络引入 三、安装Vue插件 一、VUE框架原理 1. 了解VUE框架 vue 框架 是基于MVVM设计模式的前端框架,其中的Vue对象是MVVM设计模式中的VM视图…

JavaWeb——TCP协议的相关特性

目录 一、TCP 1、特性 2、确认应答 (1)、定义 (2)、原理 (3)、接收缓冲区 3、超时重传 (1)、丢包 (2)、定义 (3)、分类 二、…

idea在main分支上新建其他分支并同步过去

前言:首先得知道以上(idea 版本为2021.1.3 ,右下角git分支部分)是什么含义。 local Branches 本地分支,代表当前项目路径下所存在的本地分支,以上是有三个,都存在与本地仓库 Remote Branches 远程分支&…

腾讯云服务器:轻量应用服务器、云服务器CVM和GPU云服务器配置表

目前腾讯云服务器分为轻量应用服务器、云服务器云服务器云服务器CVM和GPU云服务器,首先介绍一下这三种服务器。 1、腾讯云云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源&#x…

进程虚拟地址空间划分

任何编程语言->产生指令和数据 我们以x86 32位linux 作为知识介绍的背景 编译后生成exe文件在磁盘上,需要加载到内存才能运行 但不能直接加载到物理内存 linux给当前进程分配一个2^32大小的一块空间,4G 虚拟地址空间解释 它存在,你看得…

背包问题——01背包|完全背包

目录 前言&背包问题的历史 01背包 1、题目 2、暴力解01背包 Ⅰ、代码 3、动态规划解01背包 Ⅰ、二维dp数组解01背包 1)dp数组的含义 2)递推公式 3)dp数组的初始化 4)遍历顺序的讨论 5、代码 Ⅱ、一维数组解01背包 1&…

HCLE----atd以及备份方式

atd是一种基于时间的任务调度器,可以在指定时间执行一次性任务。atd启动时会读取/etc/at.allow和/etc/at.deny两个文件,来决定哪些用户有权限使用at命令提交任务。crond是一种周期性任务调度器,可以按照指定的时间间隔执行重复性任务。crond启…

5.3、web服务器简介HTTP协议

5.3、web服务器简介HTTP协议 1.Web-Server(网页服务器)2.HTTP协议(应用层的协议)①简介②概述③工作原理④HTTP请求报文格式⑤HTTP响应报文格式⑥HTTP请求方法⑦HTTP状态码 1.Web-Server(网页服务器) 一个 Web Server 就是一个服…

【arduino】超声波垃圾桶

🎊专栏【Arduino】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【勋章】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 ⭐效果 ⭐所需器材 ⭐连线图片 ⭐程序代码 ⭐代码分析 …

MySQL常见七种通用的Join查询练习题

准备数据库表 t_dept 和 t_emp CREATE TABLE t_dept (id int NOT NULL AUTO_INCREMENT,deptName varchar(30) DEFAULT NULL,address varchar(40) DEFAULT NULL,CEO int DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT7 DEFAULT CHARSETutf8mb3 CREATE TABLE t…

面包多面包多面包多面包多面包多面包多

1.背景 1.摘要 本文是针对智慧政务中的文本数据挖掘应用的研究。通过建立基于三层网络结构的fastText文本分类模型,聚类量化模型,熵权评估模型解决了群众留言分类,热点问题挖掘,答复意见评价等问题。 针对群众留言分类问题&#…

《学习循环》---C语言

目录 前言: 1.while循环 1.1while循环的结构 1.2while语句中的break和continue 2.getchar配合循环清空缓冲区 3.for循环 3.1for循环的结构 3.2for循环中的break和continue 3.3for循环的注意事项 3.4使用多个循环变量控制for循环 4.do while循环 4.1do …

chrome 浏览器在 112 正式版本以及 114 canary 版本从 devtools 控制台复制文本不会复制高亮显示的文本?

问题 我的 chrome 浏览器版本如下:版本 112.0.5615.138(正式版本) (64 位) 今天我在写代码的时候报错了,看了一下控制台浏览器,是某个属性没有定义,然后我双击这个属性名称 ctrl c…

asp.net+C#大学生高校运动会比赛综合管理系统

目录 1 绪论 3 1.1 课题背景 3 1.2 课题目标 3 1.3 研究现状 3 1.4 论文工作内容以及结构安排 4 1.4.1 论文工作内容 4 1.4.2 论文结构安排 4 2 系统开发技术介绍 6 2.1 ASP.NET简介 6 2.2 Microsoft Visual Studio 2010平台 7 2.3 SQL Serve…

第16章_网络编程

第16章_网络编程 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. 网络编程概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程…