numpy——基础知识(创建/类型/形状/运算)(python)

简介

NumPy 是一个 Python 包。它代表 Numeric Python。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。
Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005年,Travis Oliphant 通过将Numarray的功能集成到 Numeric 包中来创建NumPy包。 这个开源项目有很多贡献者。(这两段简介均是抄的,这种简介看看就行了,了解即可

基本操作

创建数组(矩阵)

# 导入库
import numpy as np
import random # 创建数组(矩阵)
a=np.array([1,2,3,4,5])
b=np.array(range(1,6))
c=np.arange(1,6)print(a)
print(b)
print(c)

效果

在这里插入图片描述

说明

我们有两个方法创建数组

  • np.arrray():这种方法我们要事先把数组的所有元素及数组的形状都准备好,调用这个方法只是转化。
  • np.arange():这种方法简单一些,但是有很多的局限性,比如只能创建一维的数组,数组元素不能随性所欲的指定。

数组类型及Numpy数据类型

查看数组类型

我们可以用type(a)查看a的类型,都是numpy.ndarray

NumPy - Ndarray 对象

NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。
ndarray中的每个元素在内存中使用相同大小的块。ndarray中的每个元素是数据类型对象的对象(称为 dtype)。
ndarray对象提取的任何元素(通过切片)由一个数组标量类型的 Python 对象表示。 下图显示了ndarray,数据类型对象(dtype)和数组标量类型之间的关系。(额,这些也是抄的,图就懒得抄过来了,看看即可)

Numpy数据类型

可以用dtype查看数组的元素类型,例如a.type查看数组a的元素类型
在这里插入图片描述

数据类型大致和C差不多,就是多个complex复数类型。

数组形状

很多都是概念性质的,没什么好讲解的(要讲解的都写了注释),直接上代码,简单明了

查看数组形状
# 导入库
import numpy as np# 查看数组的形状
a=np.array([[1,2,3],[4,5,6]])
print(a)
print(a.shape)

修改数组形状
# 导入库
import numpy as np# 修改数组的形状
# pay attention:这里的修改并没有改变原数组,调用reshape只是返回了修改后的值,若要保留修改后的值只能拿一个新的数组去接收print(a.reshape(1,6))
print("*"*30)
print(a)

reshape的使用
# 导入库
import numpy as np# 创建时直接指定数组形状
a=np.arange(24).reshape(4,6)
print(a)

将数组展开
# 导入库
import numpy as np# 将数组展开,也就是变化成一维数组
# 同样地,这里并没有修改原数组形状。像这样有返回值的方法一般都不会修改元原数组。
print(a.flatten())
print(a)

还有很多,这里就不一一讲解介绍了,我们只需要了解最基本的即可,其他的用到了去Google即可,不然会搞的自己刚开始学就很累很不知所措,不要过于完美主义。

数组运算

数组和数运算
# 数组和数的运算 
a=np.arange(12).reshape(2,6)
print(a)print("-"*30)
print(a+1)print("-"*30)
print(a*3)# 这是numpy的广播机制,运算过程中,加减乘除的值被运算到每一个元素上
同形状的数组之间运算
# 同形状的数组之间的运算a=np.arange(24).reshape(4,6)
b=np.arange(100,124).reshape(4,6)
print(a)
print("-"*40)
print(b)
print("-"*40)
print(a+b)
print("-"*40)
print(a*b)# 同形状的数组,对应的位置的元素直接运算即可
不同形状数组之间运算
# 不同形状的数组相加减
# 二行六列和一行六列a=np.arange(12).reshape(2,6)
b=np.arange(6)
print(a.shape)
print(b.shape)
print("-"*30)
print(a)
print("-"*30)
print(b)
print("-"*30)
print(a-b)
print("-"*30)
print(a*b)

# 不同形状的数组相加减
# 二行六列和二行一列a=np.arange(1,13).reshape(2,6)
b=np.arange(1,3).reshape(2,1)
print(a.shape)
print(b.shape)
print("-"*30)
print(a)
print("-"*30)
print(b)
print("-"*30)
print(a-b)
print("-"*30)
print(a*b)

# 不同形状的数组相加减
# 3*3*2和3#2a=np.arange(18).reshape(3,3,2)
b=np.arange(6).reshape(3,2)
print(a.shape)
print(b.shape)
print("-"*30)
print(a)
print("-"*30)
print(b)
print("-"*30)
print(a-b)
print("-"*30)
print(a*b)

# 不同形状的数组相加减
# 3*3*2和3#3
# 这两个形状的数组不能进行计算a=np.arange(18).reshape(3,3,2)
b=np.arange(9).reshape(3,3)
print(a.shape)
print(b.shape)
print("-"*30)
print(a)
print("-"*30)
print(b)
print("-"*30)
print(a-b)
print("-"*30)
print(a*b)# 这两个数组之间不能运算,这段代码执行会报错
总结

广播原则:如果两个数组的后缘维度(即从末尾开始算起的维度)的轴长度相符或其中一方的长度是1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。

总结

初学者可以看看这篇文章,写的很详细。但是吧…,内容确实有点多,容易一开始就劝退,而且不太好让初学者接受,容易让人学的糊里糊涂的。
我的建议是:初学者可以就先了解最基本最常用的用法,不用把所有的都弄清楚明白。先大致把知识点过一遍,有个印象,以后实际用的时候自然会熟练的。

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

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

相关文章

VueCli的安装与卸载

文章目录 一.Node安装包的报读网盘提取码二、Vue脚手架Cli三、Vue-CLI使用步骤(自定义安装)1.转换路径并创建项目2.创建步骤的解释(保姆级)3.等待vue项目自己创建好(保姆级) 四、通过npm对vue的安装与卸载 一.Node安装包的报读网盘提取码 下面的链接为地址: Node的百度网盘提取…

Redis(5.0)

1、什么是Redis Redis是一种开源的、基于内存、支持持久化的高性能Key-Value的NoSQL数据库,它同时也提供了多种数据结构来满足不同场景下的数据存储需求。 2、安装Redis(Linux) 2.1、去官网(http://www.redis.cn/)下…

linux安装ngnix

一、将nginx-1.20.1.tar.gz上传至linux服务器目录下 二、将nginx安装包解压到/usr/local目录下 tar -zxvf /home/local/nginx-1.20.1.tar.gz -C /usr/local/三、预先安装依赖 yum -y install pcre-devel yum -y install openssl openssl-devel yum -y install gcc gcc-c auto…

二分查找算法:高效搜索有序数据的利器

二分查找算法:高效搜索有序数据的利器 在计算机科学中,搜索是一项基本而重要的操作。对于有序数据,二分查找算法是一种高效的搜索方法。本文将介绍二分查找算法的原理、实现以及其在实际应用中的优势,帮助读者理解和应用这一常用的…

C++学习第七天(string类)

1、学习string的原因? C语言中的字符串 C语言中,字符串是以‘\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,而且底层空间需要用户自己管…

13. C++类使用方式

【类】 C语言使用函数将程序代码模块化,C通过类将代码进一步模块化,类用于将实现一种功能的全局数据、以及操作这些数据的函数集中存储在一起,同时可以设置类成员的访问权限,禁止外部代码使用和篡改本类成员,类成员访…

3月每日一题笔记

感谢我的好朋友的鼓励 3月4日 两种等价方式?都是错误的 ->加减中不能使用等价无穷小? ->不全面。 两项无穷小相减, 那么两项无穷小比值的极限不等于 1 时, 或者两项无穷小相加时, 其比值极限不等于 −1 时, 代数和差各项可以用等价无穷小替换 等价无穷小不精确

腾达路由器检测环境功能破解MISP基础

在虚拟机上用qemu运行腾达路由器的网站固件会遇到无法识别网络的问题,这篇主要是破解这个功能,使腾达路由器成功在虚拟机上运行,方便漏洞复现 本次用到的腾达路由器版本: https://www.tenda.com.cn/download/detail-3683.html下…

数据伪列

目录 数据伪列 rownum 查询 emp 表中的记录并且取得第一行数据 取得 emp 表的前 5 行记录 rowid 面试题:表中有许多完全重复的数据,要求将重复的数据删除掉(只剩最早的一个) Oracle从入门到总裁:https://blog.csdn.net/weixin…

Guava处理异常

guava由Google开发,它提供了大量的核心Java库,例如:集合、缓存、原生类型支持、并发库、通用注解、字符串处理和I/O操作等。 异常处理 传统的Java异常处理通常包括try-catch-finally块和throws关键字。 遇到FileNotFoundException或IOExce…

嵌入式蓝桥杯做题总结

第十二届省赛 按键代码 ——自认为比较巧妙,定时器3被设置为10ms进入一次中断,代替了HAL_Delay(10)的方法消抖; 运用状态机机思想实现检测多个按键检测——且分为两个状态,其中一个状态PB1和PB2的按键不…

stable-diffusion-webui-forge 介绍,安装,运行

一 stable-diffusion-webui-forge 介绍 stable-diffusion-webui-forge 的作用和stable-diffusion-webui一样,但性能上作了优化,说得上是是stable-diffusion-webui优化版,本人在使用stable-diffusion-webui时偶尔会有内存不够报错。本人的环境…

手写分布式配置中心(四)增加实时刷新功能(长轮询)

上一篇文章中实现了短轮询,不过短轮询的弊端也很明显,如果请求的频率较高,那么就会导致服务端压力大(并发高);如果请求的频率放低,那么客户端感知变更的及时性就会降低。所以我们来看另一种轮询…

Mysql面试总结

基础 1. 数据库的三范式是什么? 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。第二范式:要求实体的属性完全依赖于主关键字。所谓完全 依赖是指不能存在仅依赖主关键字一部分的属性。第三范式&…

UDP通信发送和接收 || UDP实现全双工通信

recvfrom ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); 功能: 从套接字中接收数据 参数: sockfd:套接字文件描述符 buf:存放数据空间首地址 …

基于springboot实现的幼儿园管理系统

一、系统架构 前端:html | layui | jquery | css 后端:springboot | mybatis 环境:jdk1.8 | mysql | maven 二、代码及数据库 三、功能介绍 01. 登录页 02. 系统管理-用户管理 03. 系统管理-页面管理 04. 系统管理-角色管…

win11配置Mask DINO小白踩坑记录

win11配置Mask DINO踩坑记录 1 准备工作2 创建python环境和安装detectron22.1 安装前提2.2 安装流程2.2.1 cl.exe的错误2.2.2 SetuptoolsDeprecationWarning的错误 3 MaskDINO运行3.1 运行demo 前情提要:需要复现Mask DINO,但是实验室没有Linux的电脑&am…

keycloak18.0.0==本地源码启动

github下载源码, 版本18.0.0 java和maven的版本如下 E:\keycloak-18.0.0>java -version java version "21.0.1" 2023-10-17 LTS Java(TM) SE Runtime Environment (build 21.0.112-LTS-29) Java HotSpot(TM) 64-Bit Server VM (build 21.0.112-LTS-…

【网站项目】308学生档案管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Spring Webflux 详解

目录 0、组件对比 1、WebFlux 1、引入 2、Reactor Core 1、HttpHandler、HttpServer 3、DispatcherHandler 1、请求处理流程 4、注解开发 1、目标方法传参 2.返回值写法 5、文件上传 6、错误处理 7、RequestContext 8、自定义Flux配置 9、Filter WebFlux&am…