Python_NumPy——入门学习(概述,数据类型,创建数组)

作者:初次知晓
邮箱:lr_1052107892@outlook.com


资料参考

[菜鸟教程](https://www.runoob.com/)

NumPy概述

NumPy(Numerical Python)是python的一个扩展程序库,支持大量的维度数据与矩阵运算,针对数据运算提供大量的数学函数库,包括:数学,逻辑,形状操作,排序,选择,输入输出,离散傅里叶变换等…

使用numpy的优势:
1.处理同样数值计算任务,比纯python更便捷
2.numpy中的数组的存储效率和输入输出性能远远优于python中等价的基本数据结构
3.numpy在底层算法比纯python代码高效

Ndarray

NDarray是Ndarray中数组的数据类型
NumPy 最重要的一个特点是其 N 维数组对象 NDarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
NDarray 对象是用于存放同类型元素的多维数组。
NDarray 中的每个元素在内存中都有相同存储大小的区域。
NDarray 内部由以下内容组成:
• 一个指向数据(内存或内存映射文件中的一块数据)的指针。
• 数据类型或 dtype,描述在数组中的固定大小值的格子。
• 一个表示数组形状(shape)的元组,表示各维度大小的元组。
• 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数

Ndarray的属性

例子:a = np.ones(shape=(3,4,5),dtype=int) # 创建一个三维,每个维度四行五列且元素全为1的数组
[[[1 1 1 1 1][1 1 1 1 1][1 1 1 1 1][1 1 1 1 1]][[1 1 1 1 1]
[1 1 1 1 1][1 1 1 1 1]
[1 1 1 1 1]][[1 1 1 1 1][1 1 1 1 1][1 1 1 1 1][1 1 1 1 1]]]四个重要属性:
1.ndim:维度print(a.ndim)3
2.shape:形状(各维度的长度)print(a.shape)(3, 4, 5)
3.size:总长度print(a.size)60
4.dtype:元素类型print(a.dtype)int32如何判断维度?数组.shape会返回该数组的形状返回几个数字,就是几维度对于一维数组,会返回:(列数)对于二维数组,会返回:(行数,列数)对于三维数组,会返回:(块数,行数,列数)对于N  维数组,会返回:(…..,行数,列数)最后两个的数值固定为行数,列数除这两个数之外的其他所有数相乘,即为:块数

NumPy数组中数据的数据类型

数据类型
Numpy要求数组中所有数据优先级相同
如果不相同将会按照优先级:str>float>int
强制统一数组内所有数据的数据结构

示例:
#优先级:str>float>intimport numpy as np
#浮点型和整形
a = np.array([3.14,2])
print(a)[ 3.14  2.  ]  #2.  表示2.0#浮点型和字符型
b = np.array([3.14,"love"])
print(b)['3.14' 'love']

NumPy数组

数组是一种类似于python中列表的一个数据容器,在numpy中一切皆数据数组是由[]包含起来的,[]嵌套级数表示数组的维度一维数组     […]二维数组     [[…]…[…]…]三维数组     [[[…]…[…]…]…[[…]…[…]…]…]以此类推……
数组中有一个形状的概念,查看数组形状:语法:数组名.shape[[1 1 1 1][1 1 1 1][1 1 1 1]]print(c.shape)输出:(3, 4)对于二维数组shape会返回该数组的行和列,即:(行,列)[[[1 1 1 1 1][1 1 1 1 1][1 1 1 1 1][1 1 1 1 1]][[1 1 1 1 1][1 1 1 1 1][1 1 1 1 1][1 1 1 1 1]][[1 1 1 1 1][1 1 1 1 1][1 1 1 1 1][1 1 1 1 1]]]print(c.shape)输出:(3, 4, 5)对于三维数组shape会返回该数组的块数,行,列,即:(块数,行,列)

创建数组

一.使用array创建数组
一.使用array创建数组
语法:变量 = numpy.array(数组数据)如: a = np.array([1,2,3])最常用
二.使用ones创建数组
二.使用ones创建数组
创建一个所有元素都为1的多维数组语法:numpy.ones(shape,dtype=None,order='C')Shape:形状Dtype=None:元素类型Order:{'C','F'}:可选项c = np.ones(shape = (3,4,5),dtype = np.int16)print(c)   #创建一个三个四行五列的数组[[[1 1 1 1 1]  [1 1 1 1 1]  [1 1 1 1 1]  [1 1 1 1 1]][[1 1 1 1 1][1 1 1 1 1][1 1 1 1 1][1 1 1 1 1]][[1 1 1 1 1][1 1 1 1 1][1 1 1 1 1][1 1 1 1 1]]]
三.使用zeros创建数组
三.使用zeros创建数组
创建一个所有元素都为0的多维数组语法:numpy.ones(shape,dtype=None,order='C')Shape:形状Dtype=None:元素类型Order:{'C','F'}:可选项d = np.zeros(shape = (5,5),dtype = np.int16)print(d) # 创建一个五行五列的数组[[0 0 0 0 0][0 0 0 0 0][0 0 0 0 0][0 0 0 0 0][0 0 0 0 0]]
四.使用full创建数组
四.使用full创建数组
创建一个所有元素都为指定元素的多维数组语法:numpy.full(shape,fill_value = None,dtype = None,order='C')Shape:形状Fill_value = None :填充的值Dtype=None:元素类型Order:{'C','F'}:可选项e = np.full(shape = (3,4),fill_value = 2)print(e)[[2 2 2 2][2 2 2 2][2 2 2 2]]
五.使用eye创建数组
五.使用eye创建数组
创建一个对角线为1其他位置为0的二维数组语法:numpy.eye(N,M=None,k=0,dtpye=float)N:行数M:列数,None(不写)表示和行数一样k=0Dtpye=None:元素类型f = np.eye(6,6,dtype=np.int16)print(f)[[1. 0. 0. 0. 0. 0.][0. 1. 0. 0. 0. 0.][0. 0. 1. 0. 0. 0.][0. 0. 0. 1. 0. 0.][0. 0. 0. 0. 1. 0.][0. 0. 0. 0. 0. 1.]]
六.使用linspace创建数组
六.使用linspace创建数组
创建一个等差数列语法:numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtpye=None)Start:开始值Stop:结束值Num=50:等差数列中默认有50个数Endpoint=True:是否包含结束值Retsep=False:是否返回等差值(公差)Dtype=None:元素类型g = np.linspace(1,10,num=10,dtype=np.int16)print(g)[ 1  2  3  4  5  6  7  8  9 10]
七.使用arange创建数组
七.使用arange创建数组和range的语法一致语法:numpy.arange(start,stop,step,dtype=None)Start:开始值,可选stop:结束值step:步长,可选Dtype=None:元素类型h = np.arange(10)print(h)[0 1 2 3 4 5 6 7 8 9]
八.使用random.randint创建数组
八.使用random.randint创建数组创建一个随机整数的多维数组语法:random.randint(low,high=None,size=None,dtype='I')low:最小值High=None时,生成的数值在[0,low]之间Size=None:数组形状Dtype=None:元素类型bi = np.random.randint(10) #[0,10)如果只填一个数字,会形成一个左闭右开的条件,并且只会输出一个数值i = np.random.randint(1,10) #[1,10)如果填两个数,会形成一个指定数值的区间,并随机输出一个数值i = np.random.randint(1,10,size = (3,4))[[5 1 5 5][8 1 8 1][8 8 5 8]]指定形状之后,会根据形状取出一定数量的数值(在指定区间内随机取)
九.使用random.randn创建数组
九.使用random.randn创建数组创建一个服从标准正态分布的多维数组以0为均数,以1为标准差的正态分布,记为 N(0,1) 标准正态分布语法: numpy.random.randn(d0,d1,…,dn)d0,d1,…,dn为该数组的形状,如果要生成一个3行四列的数组:j = np.random.randn(3,4)print(j)[[-0.2933226  -0.76987489  0.40534212 -0.21640745]    [-0.17778317 -0.52134658  1.88350071 -0.82146952]    [-1.22999297 -1.51803949  1.61657564  0.37700461]]  
十.使用random.normal创建数组
十.使用random.normal创建数组创建一个服从正态分布的多维数组语法:numpy.random.normal(loc=0.0,scale=1.0,size=None)loc=0.0:均值,对应着正态分布的中心scale:标准差,对应分布的宽度,scale越大,正态分布的缺陷越矮胖,scale越小,曲线越高瘦size=None:数组形状k=np.random.normal(loc=0.0,scale=1.0,size=(3,4))print(k)[[-0.23246216  0.26749955 -0.29392166  0.3362761 ]    [-1.91780129 -0.6669381   0.20897606  1.50653718]    [ 0.28661731 -1.02116974  0.5327165   0.3193466 ]] 
十一.使用random.random创建数组
十一.使用random.random创建数组创建一个元素为0-1(左闭右开)的随机数的多维数组语法:numpu.random.random(size=None)Size = None:数组形状l=np.random.random(size=(3,4))print(l)[[0.09826337 0.78667023 0.58771261 0.10221402]        [0.38993212 0.24497684 0.04957887 0.51181572]        [0.17323217 0.9333488  0.25844232 0.79559424]] 
十二.使用random.rand创建数组
十二.使用random.rand创建数组创建一个元素为0-1的随机数多维数组与random.random一致,但语法不同语法:numpy.random.rand(形状)m=np.random.rand(3,4)print(m)[[0.99871438 0.45171269 0.30256666 0.81072106]        [0.34212124 0.59970651 0.77702736 0.03364478]        [0.35500722 0.71010727 0.02300558 0.92293601]]   

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

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

相关文章

如何降低微服务复杂度丨云栖大会微服务主题分享实录

作者:谢吉宝 本文整理自阿里云资深技术专家、中间件负责人谢吉宝在2023云栖大会《极简微服务模式,降低微服务复杂度的最佳实践》的分享 2023 云栖大会现场 当面临复杂的挑战时,"分而治之"的方法往往能取得显著的效果。微服务架构…

C++——类型转换与特殊类设计

我们在C语言中经常会使用到强制类型转换,例如指针和整形之间的转换是最为常见的,但是 在C中,C设计师认为这种强制类型转换是不安全的,所以在C标准中加入了四种强制 类型转换风格,这就是我将要介绍的强制类型转换。 在某…

Stable Diffusion 长视频真人动画风格互转

Stable Diffusion Temporal-Kit和EbSynth 从娱乐到商用 1. Temporal Kit 和 EbSynth1.1 提取关键帧1.2 关键帧风格迁移1.3 生成序列帧2. 真人转卡通3. 卡通转真人4. 编辑技巧5. ControlNet + TemporalNet + 达芬奇Fusion6. Rerender A Video7. DiffSynth-Studio基于SD的风格化…

VS2022联合Qt5开发学习11(QT5.12.3联合VTK在VS2022上开发医学图像项目5——qvtkWidget上显示STL三维图像并取点)

这篇博文是接着这个系列前面的博文,来讲如何实现医学图像三视图同步视图。我想到的一个思路是用Scrollbar来控制切面的改变,还有一个想法是在三维图像上取点,然后以这个点为切面中心更新三维视图。这篇博文主要介绍的就是第二个想法的三维图像…

kotlin sum 与 sumOf

kotlin 中 sum 的作用: 计算一个列表里面数字的总和: val numbers listOf(1, 2, 3, 4, 5) val sum numbers.sum() println("The sum is: $sum") // 打印结果: The sum is: 15 kotlin中sumOf的作用: 也是计算一个列表里面数字…

C++ qt标题栏组件绘制

本博文源于笔者在学习C qt制作的标题栏组件,主要包含了,最小化,最大化,关闭。读者在看到这篇博文的时候,可以直接查看如何使用的,会使用了,然后进行复制粘贴源码部分即可。 问题来源 想要制作…

支持向量机(Support Vector Machines)(需要优化)

1.优化目标 一个更加强大的算法广泛的应用于工业界和学术界,它被称为支持向量机(Support Vector Machine)。与逻辑回归和神经网络相比,支持向量机,或者简称 SVM,在学习复杂的非线性方程时提供了一种更为清晰,更加强大…

Spring SpEL在Flink中的应用-与FlatMap结合实现数据动态计算

文章目录 前言一、POM依赖二、主函数代码示例三、RichFlatMapFunction实现总结 前言 SpEL表达式与Flink FlatMapFunction或MapFunction结合可以实现基于表达式的简单动态计算。有关SpEL表达式的使用请参考Spring SpEL在Flink中的应用-SpEL详解。 可以将计算表达式放入数据库&a…

RabbitMQ工作模式 - 简单模式和work工作模式多个竞争的消费者

RabbitMQ 是一个消息队列中间件,用于在分布式系统中进行消息传递。在 RabbitMQ 中,有几种工作模式,其中简单模式和工作模式是其中两种基本的模式之一。 简单模式(Simple Mode): 在简单模式中,有…

【github】github打开慢或者打不开解决方案

目录 1、打开hosts文件(C:\Windows\System32\drivers\etc) 2、然末尾放入一下两个 IP 地址: 3、替换覆盖原文件 最近github老是打不开,找了一个方法试了一下管用 github网址查询:https://ipaddress.com/website/git…

css 中 flex 布局最后一行实现左对齐

问题 flex 布局最后一行没有进行左对齐显示&#xff1a; <div classparent><div classchild></div><div classchild></div><div classchild></div><div classchild></div><div classchild></div><div…

2022年至2023年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题

2022 年至 2023 年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题 一、 第一阶段竞赛项目试题 本文件为信息安全管理与评估项目竞赛第一阶段试题&#xff0c;第一阶段内容包 括&#xff1a;网络平台搭建、网络安全设备配置与防护。 本阶段比赛时间为 180 分钟…

VirtualBox如何复制虚拟机

对于vmware或virtual pc虚拟机&#xff0c;要想快速复制几个虚拟机&#xff0c;以便集群使用&#xff0c;方法比较简单&#xff0c;例如直接复制其虚拟机相应的磁盘文件和配置文件即可&#xff0c;例如对于vmware&#xff0c;修改vmx文本文件中的内容如虚拟机名称、磁盘文件路径…

#Uniapp: uni.previewImage(OBJECT) 预览图片

uni.previewImage(OBJECT) 预览图片。 api地址 媒体-图片 示例 handlePreviewImg(current) {const urls this.rightList.map(x > x.icon)uni.previewImage({urls,current})}OBJECT 参数说明 参数名类型必填说明平台差异说明countNumber否最多可以选择的图片张数&#…

【知识---ubuntu和debian之间的关系】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ubuntu和debian之间的关系衍生关系&#xff1a;Debian作为上游源&#xff1a;软件包管理&#xff1a;版本发布&#xff1a;社区和支持&#xff1a; 二、ubu…

华为数通方向HCIP-DataCom H12-831题库(判断题:121-140)

第121题 BGP/MPLS IP VPN内层采用MP-BGP分配的标签区分不同的VPN实例,外层可采用多种隧道类型,例如GRE隧道。 正确 错误 答案: 错误 解析: VPN业务的转发需要隧道来承载,隧道类型包括GRE隧道、LSP隧道、TE隧道(即CR-LSP)。 如果网络边缘的PE设备具备MPLS功能,但骨干网核…

林浩然与Hadoop的奇幻数据之旅

林浩然与Hadoop的奇幻数据之旅 Lin Haoran and the Enchanting Data Journey with Hadoop 在一个名为“比特村”的地方&#xff0c;住着一位名叫林浩然的程序员大侠。他并非江湖上常见的武艺高强之人&#xff0c;而是凭借一把键盘、一支鼠标&#xff0c;纵横在大数据的海洋里。…

UI跟随物体的关键是什么?重要吗?

引言 UI的跟随效果 在游戏开发中&#xff0c;UI的跟随效果是提高用户体验和交互性的重要组成部分。 本文将深入介绍如何创建一个高效且可定制的UI跟随目标组件&#xff0c;并分享一些最佳实践。 本文源工程在文末获取&#xff0c;小伙伴们自行前往。 UI跟随物体的关键 UI…

MQ回顾之kafka速通

不定期更新 官网概念自查 官网&#xff1a;Apache Kafka kafka结构 和kafka相关的关键名词有&#xff1a;Producer、Broker、Topic、Partition、Replication、Message、Consumer、Consumer Group、Zookeeper。 各名词解释已经泛滥&#xff0c;如果你想看点不一样的&#xf…

如何设计一个可靠UDP

背景 通信领域存在制约三角&#xff1a;时延&#xff0c;成本和质量。TCP是增大时延和成本来保证通信质量&#xff0c;UDP牺牲了质量保证了时延和成本。一定场景使用RDP可以找到这三之间的平衡点。实现可靠UDP主要有三种方式&#xff1a; 尽力可靠&#xff1a;接收方要求发送…