NumPy创建ndarray数组大揭秘

news2024/11/24 16:21:24

1.使用 np.array() 创建

  • 使用 np.array() 由 python list 创建

n = np.array(list)
  • 注意

    • numpy 默认 ndarray 的所有元素的类型是相同的

    • 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str > float > int

    • ndarray 的常见数据类型:

      • int:int8、uint8、int16、int32、int64

      • float:float16、float32、float64

      • str:字符串

l = [1,4,2,3,5,6]n = np.array(l)n# 执行结果array([1, 4, 2, 3, 5, 6])# 类型type(n)# 执行结果numpy.ndarray# 形状n.shape# l.shape # 列表没有shape# 执行结果(6,)# 优先级:str > float > int# n = np.array([3.14,2])n = np.array([3.14,2,"hello"])n# 执行结果array(['3.14', '2', 'hello'], dtype='<U32')

2.使用 np 的常规函数创建

(1)np.ones(shape,dtype=None,order='C')

  • 创建一个所有元素为1的多维数组

  • 参数说明:

    • shape:形状

    • dtpye=None:元素类型

    • order:{'C','F'},可选,默认值:C 是否在内存总以行主(C-风格)或列主(Fortran-风格)顺序存储多维数据,一般默认即可

n = np.ones(shape=(3,))n# 执行结果array([1., 1., 1.])n = np.ones(shape=(3,4))n# 执行结果array([[1., 1., 1., 1.],       [1., 1., 1., 1.],       [1., 1., 1., 1.]])n = np.ones(shape=(3,4),dtype=np.int16)n# 执行结果array([[1, 1, 1, 1],       [1, 1, 1, 1],       [1, 1, 1, 1]], dtype=int16)       n = np.ones(shape=(3,4,5),dtype=np.int16)n# 执行结果array([[[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]]], dtype=int16)

(2)np.zeros(shape,dtype=float,order='C')

  • 创建一个所有元素读为0的多维数组

  • 参数说明

    • shape:形状

    • dtype=None:元素形状

n = np.zeros((5,5),dtype=np.int16)n# 执行结果array([[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]], dtype=int16)

(3)np.full(shape,full_value,dtype=None,order='C')

  • 创建一个所有元素都为指定元素的多维数组

  • 参数说明:

    • shape:形状

    • fill_value:填充值

    • dtype=None:元素类型

n = np.full(shape=(3,4),fill_value=8,dtype=np.int16)n# 执行结果array([[8, 8, 8, 8],       [8, 8, 8, 8],       [8, 8, 8, 8]], dtype=int16)

(4)np.eye(N,M=None,k=0,dtype=float)

  • 对角线为1其他的位置为0的二维数组

  • 参数说明:

    • N:行数

    • M:列数,默认为None,表示和行数一样

    • k=0:向右偏移0个位置

    • dtype=None:元素类型

# 对角线为1其他的位置为0的二维数组# 单位矩阵:主对角线都是1,其他都是0n = np.eye(6)n# 执行结果array([[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.]])n = np.eye(6,6)n# 执行结果array([[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.]])n = np.eye(6,9,dtype=np.int8)n# 执行结果array([[1, 0, 0, 0, 0, 0, 0, 0, 0],       [0, 1, 0, 0, 0, 0, 0, 0, 0],       [0, 0, 1, 0, 0, 0, 0, 0, 0],       [0, 0, 0, 1, 0, 0, 0, 0, 0],       [0, 0, 0, 0, 1, 0, 0, 0, 0],       [0, 0, 0, 0, 0, 1, 0, 0, 0]], dtype=int8)# k=2:向右偏移2个位置n = np.eye(6,6,k=2,dtype=np.int8)n#执行结果array([[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],       [0, 0, 0, 0, 0, 0]], dtype=int8)       # k=-2:向左偏移2个位置n = np.eye(6,6,k=-2,dtype=np.int8)n# 执行结果array([[0, 0, 0, 0, 0, 0],       [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]], dtype=int8)

(5)np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)

  • 创建一个等差数列

  • 参数说明:

    • start:开始值

    • stop:结束值

    • num=50:等差数列中默认有50个数

    • endpoint=True:是否包含结束值

    • retstep=False:是否返回等差值(步长)

    • dtype=None:元素类型

# 等差数列:1,3,5,7,9......n = np.linspace(1,99,num=50,dtype=np.int16)n# 执行结果array([ 1,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33,       35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67,       69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99],      dtype=int16)      # 不包含结束值n = np.linspace(1,99,num=50,dtype=np.int16,endpoint=False)n# 执行结果array([ 1,  2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,       34, 36, 38, 40, 42, 44, 46, 48, 50, 51, 53, 55, 57, 59, 61, 63, 65,       67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97],      dtype=int16)      # retstep=True:显示步长n = np.linspace(1,99,num=50,dtype=np.int16,retstep=True)n# 执行结果(array([ 1,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33,        35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67,        69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99],       dtype=int16), 2.0)

(6)np.arange([start,]stop,[step,]dtype=None)

  • 创建一个数值范围的数组

  • 和 Python 中 range 功能类型

  • 参数说明:

    • start:开始值(可选)

    • stop:结束值(不包含)

    • step:步长(可选)

    • dtype=None:元素类型

# 不包含结束值n = np.arange(10)n# 执行结果array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])# 设置开始值n = np.arange(2,10)n# 执行结果array([2, 3, 4, 5, 6, 7, 8, 9])# 设置步长n = np.arange(2,10,2)n# 执行结果array([2, 4, 6, 8])

(7)np.random.randint(low,high=None,size=None,dtype='I')

  • 创建一个随机整数的多维数组

  • 参数说明:

    • low:最小值

    • high=None:最大值

      • high=None时,生成的数值在【0,low)区间内

      • 如果使用high这个值,则生成的数值在【low,high)区间

    • size=None:数组形状,默认只输出一个随机数

    • dtype=None:元素类型b

# 随机整数,范围:[0,3)n = np.random.randint(3)n# 执行结果2# 随机整数,范围:[3,10)n = np.random.randint(3,10)n# 执行结果7# 随机整数:一维数组n = np.random.randint(3,10,size=6)n# 执行结果array([3, 9, 9, 9, 3, 5])# 随机整数:二维数组n = np.random.randint(3,10,size=(3,4))n# 执行结果array([[6, 6, 4, 7],       [7, 8, 3, 7],       [5, 9, 7, 6]])       # 随机整数:三维数组n = np.random.randint(3,10,size=(3,4,5))n# 执行结果array([[[3, 6, 8, 6, 3],        [3, 5, 3, 5, 9],        [5, 7, 5, 6, 8],        [5, 5, 5, 9, 9]],       [[5, 5, 3, 6, 9],        [8, 8, 7, 8, 9],        [6, 5, 7, 5, 3],        [8, 5, 3, 4, 8]],       [[5, 7, 3, 3, 8],        [5, 9, 9, 9, 4],        [3, 6, 3, 4, 9],        [5, 7, 7, 4, 5]]])        # 随机整数:三维数组n = np.random.randint(0,256,size=(20,40,3))nplt.imshow(n)# 执行结果<matplotlib.image.AxesImage at 0x19507854a90>

(8)np.random.randn(d0,d1,...,dn)

  • 创建一个服从标准正态分布的多维数组

    • 标准正态分布又称为 u 分布,是以 0 为均数,以 1 为标准差的正态分布,记为 N(0,1)标准正态分布,在 0 左右出现的概率最大,越远离出现的概率越低

  • 创建一个所有元素为 1 的多维数组

  • 参数说明:

    • dn:第 n 个维度的数值

n = np.random.randn()n# 执行结果-0.3152803212777383n = np.random.randn(10)n# 执行结果array([-1.08674923, -0.84266234,  0.48315194, -0.27384792, -0.22261324,        0.35111371,  1.63799966, -0.74853446,  0.52026937,  0.03269324])n = np.random.randn(3,4)n# 执行结果array([[ 0.05467138,  0.71906585,  1.71433002,  0.68904993],       [-1.17094149, -0.95344073,  0.76602977, -1.22046271],       [ 1.45891993,  1.40378872, -0.89364469, -1.29611593]])

(9)np.random.normal(loc=0.0,scale=1.0,size=None)

  • 创建一个服从正态分布的多维数组

  • 参数说明:

    • loc=0.0:均值,对应着正态分布的中心

    • scale:标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦

    • size=None:数组形状

n = np.random.normal(loc=100)n# 执行结果98.54896577995035n = np.random.normal(loc=100,scale=10)n# 执行结果109.93226548891414n = np.random.normal(loc=100,scale=10,size=(3,4))n# 执行结果array([[106.55863188,  99.7947272 ,  92.6754544 ,  83.47585069],       [104.12500667, 109.83623019,  96.68665303,  96.47597136],       [ 90.24713131,  90.28364275,  93.38309007,  83.58287443]])

(10)np.random.random(size=None)

  • 创建一个元素为 0-1(左闭右开)的随机数的多维数组

  • 参数说明:

    • size=None:数组形状

n = np.random.random()n# 执行结果0.31199272530455857n = np.random.random(size=(3,4))n# 执行结果array([[0.08444408, 0.07450235, 0.88522599, 0.86113378],       [0.82065362, 0.97504932, 0.65321015, 0.96921815],       [0.95734724, 0.17062751, 0.58630317, 0.62395388]])

(11)np.random.rand(d0,d1,...,dn)

  • 创建一个元素为 0-1(左闭右开)的随机数的多维数组

  • 和 np.random.random 功能类似,掌握其中一个即可

  • 参数说明:

    • dn:第 n 个维度的数值

n = np.random.rand()n# 执行结果0.03291695735466904n = np.random.rand(3,4)n# 执行结果array([[0.15867292, 0.85912693, 0.67912155, 0.95042762],       [0.84022126, 0.85000877, 0.06752424, 0.71760504],       [0.97089325, 0.86010712, 0.77839465, 0.44999928]])

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

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

相关文章

自动驾驶中基于Transformer的传感器融合:研究综述

自动驾驶中基于Transformer的传感器融合&#xff1a;研究综述 论文链接&#xff1a;https://arxiv.org/pdf/2302.11481.pdf 调研链接&#xff1a;https://github.com/ApoorvRoboticist/Transformers-Sensor-Fusion 附赠自动驾驶学习资料和量产经验&#xff1a;链接 摘要 本…

【论文笔记】Text2QR

论文&#xff1a;Text2QR: Harmonizing Aesthetic Customization and Scanning Robustness for Text-Guided QR Code Generation Abstract 二维码通常包含很多信息但看起来并不美观。stable diffusion的出现让平衡扫描鲁棒性和美观变为可能。 为了保证美观二维码的稳定生成&a…

【PowerDesigner】PGSQL反向工程过程已中断

问题 反向工程过程已中断,原因是某些字符无法通过ANSI–&#xff1e;UTF-16转换进行映射。pg导入sql时报错&#xff0c;一查询是power designer 反向工程过程已中断&#xff0c;某些字符无法通过ANSI–>UTF-16转换进行映射&#xff08;会导致数据丢失&#xff09; 处理 注…

获取用户位置数据,IP定位离线库助您洞悉消费者需求

获取用户位置数据是现代互联网应用中非常重要的一环。通过获取用户的位置数据&#xff0c;可以了解用户所在的地理位置&#xff0c;从而更好地为用户提供个性化的服务和推荐。而IP归属地离线库就是一种非常有用的工具&#xff0c;可以帮助企业准确地获取用户的位置信息。 IP归…

Linux系统编程--管道

1、管道&#xff08;一&#xff09; 1.1、什么是管道 例如&#xff1a;ls | wc -w这条命令&#xff0c;ls是一个进程&#xff0c;把结果通过|管道输出到wc这个进程中&#xff0c;所以管道本质上是一个内核缓冲区 1.2、管道限制 1.3、匿名管道pipe 1.4、创建管道后示意图 管道…

E-SOP电子指导书系统在日用品生产中的作用

在当今高速发展的日用品生产行业中&#xff0c;E-SOP 电子指导书系统正发挥着越来越重要的作用。它以其独特的优势&#xff0c;为日用品生产带来了许多积极的影响。 1、E-SOP 电子指导书系统提高了生产效率。 在传统的生产方式中&#xff0c;工人往往需要查阅纸质指导书&#…

vue+springboot实现文件上传

①后端springboot创建controller FileController: package com.example.springboot.controller;import cn.hutool.core.io.FileUtil; import com.example.springboot.common.AuthAccess; import com.example.springboot.common.Result; import org.springframework.beans.fact…

【电源专题】电池不均衡的影响与原因

在使用多节电池设计产品时,大家都知道如果多节电池不均衡会影响电池寿命与充电安全。特别是在充电末端与放电末端时表现较为明显。 电池不均衡的影响 那么为什么会影响安全与寿命呢?其原因如下: 如果电池不均衡时,相当于木桶的短板效应。一方面没法充满,充电时电压高的那一…

YOLOv8结合SCI低光照图像增强算法!让夜晚目标无处遁形!【含端到端推理脚本】

这里的"SCI"代表的并不是论文等级,而是论文采用的方法 — “自校准光照学习” ~ 左侧为SCI模型增强后图片的检测效果,右侧为原始v8n检测效果 这篇文章的主要内容是通过使用SCI模型和YOLOv8进行算法联调,最终实现了如上所示的效果:在增强图像可见度的同时,对图像…

2024最新软件测试【测试理论+ python 编程 】面试题(内附答案)

一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段&#xff1a;需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样&#xff0c;之后我们会有一个需求澄清会议&#xff0c; …

教你一文搞懂cookie

cookie 1、cookie是什么&#xff1f; cookie的中文翻译是曲奇&#xff0c;小甜饼的意思。cookie其实就是一些数据信息&#xff0c;类型为“小型文本文件”&#xff0c;存储于电脑上的文本文件中。 2、cookie有什么用&#xff1f; Cookie主要用于维持用户会话、个性化服务、…

HarmonyOS 应用开发之LifecycleForm接口切换LifecycleApp接口切换 LifecycleApp接口切换

LifecycleForm接口切换 FA模型接口Stage模型接口对应d.ts文件Stage模型对应接口onCreate?(want: Want): formBindingData.FormBindingData;ohos.app.form.FormExtensionAbility.d.tsonAddForm(want: Want): formBindingData.FormBindingData;onCastToNormal?(formId: string…

基于Springboot的一站式家装服务管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的一站式家装服务管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体…

Linux系统下安装jdk与tomcat【linux】

一、yum介绍 linux下的jdk安装以及环境配置&#xff0c;有两种常用方法&#xff1a; 1.使用yum一键安装。 2.手动安装&#xff0c;在Oracle官网下载好需要的jdk版本&#xff0c;上传解压并配置环境。 这里介绍第一种方法&#xff0c;在此之前简单了解下yum。 yum 介绍 yum&…

Micron FY24 Q2业绩强劲,凭内存实现翻盘

根据TechInsights数据显示&#xff0c;美光科技24财年第二季度业绩强劲&#xff0c;公司通过技术创新和产能优化&#xff0c;成功抓住了AI服务器和其他高性能应用带来的市场需求增长机遇。尽管短期内面临供应紧张的问题&#xff0c;但美光通过加大研发投入和产能转换力度&#…

重磅!OpenAI宣布无需注册即可使用GPT

以下转自&#xff1a;凌晨重磅&#xff01;GPT今天起无需注册就能用 今天凌晨&#xff0c;OpenAI 宣布&#xff0c; GPT 无需注册就能立即使用。 目前每周有来自全球 185 个国家和地区的 1 亿多人在使用 GPT 获取新知识&#xff0c;OpenAI 正在逐步开放这项服务&#xff0c;旨…

LeetCode刷题记(一):1~30题

1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以…

“可惜我相貌平平,惊艳不了你的青春......”

动态内存管理 1. 为什么要有动态内存分配2. malloc和free2.1 malloc2.2 free 3. calloc和realloc3.1 calloc3.2 realloc 4. 常⻅的动态内存的错误4.1 对NULL指针的解引⽤操作4.2 对动态开辟空间的越界访问4.3 对⾮动态开辟内存使⽤free释放4.4 使⽤free释放⼀块动态开辟内存的…

海外媒体宣发技巧解析从而提升宣发效果

在当今全球化的媒体环境下&#xff0c;海外媒体宣发是企业和品牌推广的重要手段。然而&#xff0c;要在海外市场取得成功&#xff0c;一味地复制国内的宣发策略是行不通的。要想提升宣发效果&#xff0c;就必须了解并掌握一些海外媒体宣发的技巧。世媒讯一家从事海内外媒体的推…

python爬虫———urllibd的基本操作(第十二天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…