Python NumPy数组的创建方法

Numpy是Python中科学计算的基础包,其核心对象就是ndarray(n维数组)。利用数组可以快速执行逻辑,形状操作,统计和傅里叶变换等运算,其效率比Python原生的数组效率更高。因此使用Numpy的第一件事就是创建Numpy数组,本文总结了5种常用的创建NumPy数组方法。

文章目录

  • 一、使用NumPy内部功能函数
    • 1.1 使用arange函数
    • 1.2 创建多维数组
    • 1.3 使用zeros/zeros_like和ones/ones_like函数
    • 1.4 使用full/full_like函数
    • 1.5 使用empty/empty_like函数
    • 1.6 使用eye函数
    • 1.7 使用linspace函数
    • 1.8 使用copy函数
  • 二、从python序列对象转换
  • 三、使用库函数
  • 四、从文件读取数据
  • 五、从字符串或缓冲区创建

一、使用NumPy内部功能函数

1.1 使用arange函数

Numpy的arange函数可以快速创建一个一维数组,功能和python的range函数很像,但它返回的是NumPy数组而不是列表。数组中元素的下标从0开始(和Python的列表相同):

import numpy as np
a = np.arrange(10)

在这里插入图片描述

通过数组的shape属性可以查看数组的维度,返回的元组中只有1个数字,说明a是一个一维数组:

a.shape

在这里插入图片描述

1.2 创建多维数组

在使用arange创建一维数组时,通过reshape函数可以将其转化为指定的维度,下面创建一个3行3列二维数组:

a1 = np.arange(9).reshape(3,3)

在这里插入图片描述

通过a1的shape属性可以看到返回了2个数字,说明这是二维数组(这个就是reshape的参数):

a1.shape

在这里插入图片描述

访问二维数组中的元素,需要2个索引值:

a1[1][2]    # 访问第2行,第3列元素(索引从0开始)

在这里插入图片描述

同理,三维数组就需要给reshape函数提供3个参数(访问元素也需要3个索引值),N维数组依次类推:

a2 = np.arange(27).reshape(3,3,3)

在这里插入图片描述
注意:arange函数返回的元素个数需要和reshape参数的乘积相同,示例中是27=3 X 3 X 3,否则无法生成N维数组。

1.3 使用zeros/zeros_like和ones/ones_like函数

通常数组中的元素最初值可能是未知的,但形状通常是已知的。NumPy提供了一系列函数来创建指定形状的数组,并用初始值填充,这样可以避免后期数组增长(NumPy数组变更形状代价很大,需要删除重建,这点和Python不同)。

zeros和ones函数可以创建数组并分别用0和1预填充。zeros和ones传入的参数为数组的各个维度值组成的元组。下面示例使用zeros和ones分别创建一个3行3列的二维数组,注意各维度值是以元组的形式传入的,因此是双层括号:

a3 = np.zeros((3,3))    # 以元组的形式传入
a4 = np.ones((3,3))

在这里插入图片描述

zeros_like和ones_like函数会复制指定数组对象的形状,同时采用0和1填充,下面示例复制a4的形状,但是填充从1变成了0:

a4_like = np.zeros_like(a4)

在这里插入图片描述

1.4 使用full/full_like函数

full函数的效果和zeros和ones类似,但可以自己指定填充元素的值(zeros和ones只会使用0和1填充),下面创建一个3*3的二维数组,并使用9填充,第一个参数是元组(3,4),代表3行4列,第二个参数9代表填充值:

a5 = np.full((3,4), 9)

在这里插入图片描述

同样full_like函数可以复制指定数组的形状,并指定用7填充:

a5_like = np.full_like(a5, 7)    # 复制a5的形状,并用7填充

在这里插入图片描述

1.5 使用empty/empty_like函数

empty函数效果和zeros和ones的也类似,但它不会初始化元素的值(值是随机的,取决于内存状态),下面创建一个2行2列的二维数组:

a6 = np.empty((2,2))

在这里插入图片描述

和zeros_like函数一样,empty_like函数也会复制的数组的形状,但填充值是随机的:

a6_like = np.empty_like(a6)

在这里插入图片描述

1.6 使用eye函数

eye函数会创建一个的二维数组,其对角线元素值为1,其余元素值为0。

仅传入1个参数N时,默认返回数组就是N行N列,对角线上的值全部为1:

a7 = np.eye(3)

在这里插入图片描述

你也可以传入第二个参数,显式指定数组的列数,例如3行4列:

a8 = np.eye(3,4)

在这里插入图片描述

1.7 使用linspace函数

linspace函数会在两个数字之间,选择指定个数的数字,数字间的间隔相同(通过个数计算),并最终返回一个数组对象。

在从0到10之间选择6个数字,相邻的元素间隔相同:

a9 = np.linspace(0, 10, 6)    # 0, 10, 6 分别对应开始,结束,元素个数  

在这里插入图片描述

1.8 使用copy函数

对于任何数组对象,你都可以使用copy函数来返回一个相同的数组对象:

a10 = np.copy(a9)

在这里插入图片描述

二、从python序列对象转换

array函数可以将序列类型的python对象转换成NumPy数组。

例如,将列表对象转换为numpy数组:

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

在这里插入图片描述

你也可以通过变量名来完成转换,示例将一个元组转换为数组:

tuple = (5,6,7,8)
a12 = np.array(tuple)

在这里插入图片描述

对于多维数组,你需要自己完成嵌套的编写,示例将生成一个二维数组:

list1 = [(1,2,3), (4,5,6), (7,8,9)]    # 元组组成的列表
a13 = np.array(list1)

在这里插入图片描述

三、使用库函数

有一些库经常被用来初始化生成函数,例如random库,下面为random库几个常用的函数。

np.random.randint可以在指定区间生成随机整数,下面示例会在半开区间[0,10)随机选择整数,配合size参数可以生成指定形状的数组,size=5表示挑选5个整数,生成一维数组:

ar1 = np.random.randint(10, size=5)    # 在区间[0,10) 即0-9,随机挑选整数,生成的一维数组

在这里插入图片描述

使用两个整数参数可以指定整数区间的上下限(上限不包含),这里并使用size指定生成一个3*3的数组:

ar2 = np.random.randint(90, 100, size=(3,3))  # 在90-99(不含上限100)挑选整数,生成3*3的数组

在这里插入图片描述

np.random.rand() 产生[0,1)的随机数,参数为数组的形状,例如,生成2行3列的数组:

ar3 = np.random.rand(2,3)

在这里插入图片描述

np.random.randn() 产生[0,1)的随机数,但是数值符合正态分布:

ar4 = np.random.randn(3,4)

在这里插入图片描述

四、从文件读取数据

NumPy提供的fromfile函数可以直接从文件中读取数据,并转换为数组对象,文件可以是二进制或者文本格式,fromfile还有一个对应的函数tofile,可以将数组对象写入文件。

我们先用tofile将一个数组写入文件array.bin,写入过程中你可以使用sep参数来指定分隔符:

a = np.arange(9)
a.tofile('array.bin')

在这里插入图片描述

再使用fromfile函数,将这个数组从文件读回来,注意读取时默认的数据类型是float,会导致错误,必须显式使用dtype=int来指定以整型的方式读取:

b = np.fromfile('array.bin', dtype=int)

在这里插入图片描述

五、从字符串或缓冲区创建

使用fromstring函数可以将python字符串直接转换为numpy数组,下面示例将2个字符串转换为数组,参数sep指定了元素的分隔符:

a_str1 = np.fromstring('1 2 3', sep=' ')    # 元素以空格分隔    
a_str2 = np.fromstring('1,2,3', sep=',')    # 元素以逗号分隔 

在这里插入图片描述

使用frombuffer函数可以将缓冲区的内容转换为numpy数组,先创建一个字符串缓冲区,然后转换为数组。dtype='S1’表示缓冲区每个字符都转换为1个字节的字符串:

buf_str = b'Hello, world!'
a_buf = np.frombuffer(buf_str, dtype='S1')

在这里插入图片描述

以上即是NumPy中常用的数组创建方法总结,熟悉各类创建方法是使用NumPy的基础。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

构建第一个ArkTS应用之@LazyForEach:数据懒加载

LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当在滚动容器中使用了LazyForEach,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。 接口…

线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法

最小二乘分为线性最小二乘和非线性最小二乘 最小二乘目标函数都是min ||f(x)||2 若f(x) ax b,就是线性最小二乘;若f(x) ax2 b / ax2 bx 之类的,就是非线性最小二乘; 1. 求解线性最小二乘 【参考】 2. 求解非线性最小二乘…

玩转大模型 企业AI着陆新正解 神州问学AI原生赋能平台正式发布

在人工智能技术日新月异的今天,神州数码凭借深厚的行业洞察和技术积累,揭开了AI原生赋能平台——神州问学的神秘面纱。作为企业AI着陆的加速引擎,神州问学致力于通过AI原生场景赋能,为企业开辟一条通往智能未来的坦途。 神州问学—…

出国旅游常用英语,柯桥成人英语培训

Where can I catch a taxi?哪里我可以叫到出租车? The taxi zone is right on the left corner over there.出租车站台就在左边转角处。 Are you free?您有空吗? Sure. Where are you going?当然。您要去哪里? Drive me back to Santa …

2024年淘宝京东天猫618红包领取跨店满减优惠券活动时间是从什么时候开始到几月几号结束?

2024年淘宝、天猫、京东618红包领取口令及活动时间已发布,具体如下: 一、2024年淘宝天猫618活动 1.1、2024年淘宝天猫618活动时间 2024年5月20日开始持续到6月20日结束; 1.2、2024年淘宝天猫618红包领取 在活动时间内,每天都可…

如何通过radsystem源代码启动项目

大家有没有想过这样一个问题,如果别人没有下载radsystems,别人该如何打开我们的项目呢,那么今天我来介绍一下,如何启动radsystem源代码。 一般来说我们都是需要打开radsystems的publish部署项目 但是我们可以通过它部署后的源代码…

内存函数:memcpy(拷贝),memmove(拷贝),memcmp(比较),memset(设置)

内存函数 一.memcpy(内存拷贝1)1.函数使用2.模拟实现 二.memmove(内存拷贝2)1.函数使用2.模拟实现 三.memcmp(内存比较)1.函数使用2.模拟实现 四.memset(内存设置)1.函数使用2.模拟实…

axios封装 手动取消接口请求

axios封装 手动取消接口请求 1.创建clearHttpRequest.js文件2.封装的axios文件中使用3.vue文件中引入4. 路由切换使用 对于一些接口loading很久,用户想手动终止请求的需求, 并为了节约性能,当路由切换时,cancel掉还没有结束的接口…

Redis经典问题:BigKey问题

大家好,我是小米,今天来和大家聊聊Redis中的一个经典问题:BigKey问题。在互联网系统中,我们经常需要保存大量的用户数据,比如用户的个人信息、粉丝列表、发表的微博内容等等。这些数据往往会被存储在Redis这样的缓存系统中,以提高系统的性能和响应速度。但是,在处理这些…

算法考试题

分治法课堂案例 第1关:二分搜索技术 任务描述 本关任务:给定一组有序整数,用二分查找技术查找X是否在序列中,在则输出Yes,不在则输出No。 输入格式:三行,第一行一个整数n,第二行…

相机模型的内参、外参

相机模型的内参、外参 文章目录 相机模型的内参、外参1. 针孔模型、畸变模型(内参)2. 手眼标定(外参) Reference 这篇笔记主要参考:slam十四讲第二版(高翔) 相机将三维世界中的坐标点&#xff…

2024年加密软件市场大比拼:谁将成为数据保护的新星

在2024年的加密软件市场,一场激烈的竞争正在上演。各大厂商纷纷推出自家的最新产品,旨在为用户提供更加安全、可靠的数据保护方案。在这场大比拼中,谁将成为数据保护的新星,引领市场的新潮流呢? 首先,我们…

收藏与品鉴:精酿啤酒的艺术之旅

啤酒,这一古老的酒精饮品,不仅是人们生活中的日常饮品,更是一种艺术和文化的载体。对于Fendi club啤酒而言,收藏与品鉴更是一门深入骨髓的艺术之旅。 Fendi club啤酒的收藏,不仅仅是简单的存放和保管,而是一…

阿里云域名备案流程

阿里云域名备案流程大致可以分为以下几个步骤,这些信息综合了不同来源的最新流程说明,确保了流程的时效性和准确性: UP贴心的附带了链接: 首次备案流程:ICP首次备案_备案(ICP Filing)-阿里云帮助中心 (aliyun.com) …

AUS GLOBAL 与皇家贝蒂斯在对战皇家马德里的比赛日举办现场体验活动

AUS Global 最近前往西班牙庆祝与皇家贝蒂斯的赞助合作,并获得了难忘的比赛日体验,包括在贵宾室中观看皇家贝蒂斯对阵皇家马德里的精彩比赛。 活动开始时,AUS Global 受邀来到皇家贝蒂斯主场贝尼托-比利亚马林体育场的独家 Showbox 贵宾室。…

2024深圳杯数学建模C题参考论文24页+完整代码数据解题

一、问题研究 24页参考论文: 【编译器识别】2024深圳杯C题24页参考论文1-3小问完整解题代码https://www.jdmm.cc/file/2710545/ 为了回答这些问题,我们需要进行一系列的编译实验、分析编译结果,并构建判别函数。以下是对这些问题的初步分析…

P9748 [CSP-J 2023] 小苹果:做题笔记

目录 P9748 [CSP-J 2023] 小苹果 思路 代码 P9748 [CSP-J 2023] 小苹果 P9748 [CSP-J 2023] 小苹果 思路 先写几个看看规律 题意我们能看出来是三个三个一组的,然后每次取走的都是三个里面的第一个。我们应该很容易想到如果一轮的总数是三的倍数的话&#xff0…

【AI智能体】零代码构建AI应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

欢迎来到《小5讲堂》 这是《文心智能体平台》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 文心智能体大赛背景创建应用平台地址快速构建【基础配置】…

win10远程连接设置

1)开启远程连接 方式1: 控制面板-->系统和安全-->系统,点击【允许远程访问】 选择 允许远程连接到此计算机 方式2: WindowsR快捷键打开运行对话框,输入 sysdm.cpl 打开系统属性 选择 允许远程连接到此计算机 …

社交时代的象征:探索Facebook的文化影响

在当今社交媒体盛行的时代,Facebook作为其中的巨头之一,不仅是一个网络平台,更是社交文化的象征。本文将深入探讨Facebook在社交时代的文化影响,从用户行为到社会互动,从信息传播到文化交流,揭示其在塑造当…