【深度学习】 Python 和 NumPy 系列教程(九):NumPy详解:1、创建数组的n种方式

目录

一、前言

二、实验环境

三、NumPy

0. 多维数组对象(ndarray)

a. 多维数组的属性

1. 创建数组

a. 使用numpy.array函数:

b. 使用numpy.zeros函数

c. 使用numpy.ones函数

d. 使用numpy.arange函数

e. 使用numpy.linspace函数

f. 使用numpy.eye函数

g. 使用numpy.random模块

h. 使用numpy.full函数

i. 使用numpy.copy函数

j. 使用numpy.empty函数

k. 使用numpy.diag函数

l. 使用numpy.tile函数

m. 使用numpy.meshgrid函数

n. 使用numpy.fromfunction函数

o. 使用numpy.loadtxt函数


一、前言

        Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。

        Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:

  • Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
  • Numpy:数组、数组索引、数据类型、数组数学、广播
  • Matplotlib:绘图,子图,图像
  • IPython:创建笔记本,典型工作流程

二、实验环境

numpy1.21.6
python3.7.16
  • 运行下述命令检查Python版本
 python --version 
  • 运行下述代码检查Python、NumPy版本
import sys
import numpy as npprint("Python 版本:", sys.version)
print("NumPy 版本:", np.__version__)

三、NumPy

        NumPy(Numerical Python)是一个用于科学计算的Python库。它提供了一个强大的多维数组对象(ndarray),用于进行高效的数值运算和数据处理。Numpy的主要功能包括:

  1. 多维数组:Numpy的核心是ndarray对象,它是一个多维数组,可以存储同类型的元素。这使得Numpy非常适合处理向量、矩阵和其他多维数据结构。

  2. 数学函数:Numpy提供了许多常用的数学函数,如三角函数、指数函数、对数函数等。这些函数可以直接应用于整个数组,而无需编写循环。

  3. 广播(Broadcasting):Numpy支持不同形状的数组之间的运算,通过广播机制,可以对形状不同的数组进行逐元素的操作,而无需显式地编写循环。

  4. 线性代数运算:Numpy提供了丰富的线性代数运算函数,如矩阵乘法、求解线性方程组、特征值计算等。

  5. 随机数生成:Numpy包含了用于生成各种概率分布的随机数的函数,如均匀分布、正态分布、泊松分布等。

  6. 数据操作:Numpy提供了很多用于操作数组的函数,如切片、索引、排序、去重等。

        Numpy广泛应用于科学计算、数据分析、机器学习等领域。它的高效性和便捷性使得它成为Python数据科学生态系统中不可或缺的组成部分。

0. 多维数组对象(ndarray)

        NumPy的ndarray对象是NumPy库中最重要的对象之一,也是进行科学计算的核心数据结构。ndarray代表了一个多维的数组,可以存储相同类型的元素。

a. 多维数组的属性

  • ndarray.shape:返回表示数组形状的元组,例如(2, 3)表示2行3列的数组。
  • ndarray.dtype:返回数组中元素的数据类型,例如intfloatbool等。
  • ndarray.ndim:返回数组的维度数,例如1表示一维数组,2表示二维数组。

1. 创建数组

a. 使用numpy.array函数:

        可以使用numpy.array函数从Python列表或元组创建数组。

import numpy as np# 从列表创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])# 从列表创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])

b. 使用numpy.zeros函数

        可以使用numpy.zeros函数创建指定形状的全零数组。

import numpy as np# 创建形状为(2, 3)的全零数组
zeros_arr = np.zeros((2, 3))

c. 使用numpy.ones函数

        可以使用numpy.ones函数创建指定形状的全一数组。

import numpy as np# 创建形状为(3, 3)的全一数组
ones_arr = np.ones((3, 3))

d. 使用numpy.arange函数

        可以使用numpy.arange函数创建等差数列数组。

import numpy as np# 创建从0到9的等差数列数组,步长为2
arange_arr = np.arange(0, 10, 2)

e. 使用numpy.linspace函数

        可以使用numpy.linspace函数创建指定起始值、终止值和元素个数的等差数列数组。

import numpy as np# 创建从0到1的等差数列数组,包含5个元素
linspace_arr = np.linspace(0, 1, 5)

f. 使用numpy.eye函数

        可以使用numpy.eye函数创建指定大小的单位矩阵。

import numpy as np# 创建3x3的单位矩阵
eye_arr = np.eye(3)

g. 使用numpy.random模块

    numpy.random模块提供了多种随机数生成函数,可以用来创建具有随机值的数组。

import numpy as np# 创建形状为(2, 2)的随机数数组
random_arr = np.random.random((2, 2))# 创建形状为(3, 3)的随机整数数组(范围为0到9)
random_int_arr = np.random.randint(0, 10, (3, 3))

h. 使用numpy.full函数

        可以使用numpy.full函数创建指定形状和填充值的数组。

import numpy as np# 创建形状为(2, 2)且填充值为7的数组
full_arr = np.full((2, 2), 7)

i. 使用numpy.copy函数

        可以使用numpy.copy函数从现有数组创建一个副本。

import numpy as np# 创建arr的副本
arr_copy = np.copy(arr)

j. 使用numpy.empty函数

        可以使用numpy.empty函数创建指定形状的未初始化数组,数组的元素值将是内存中的任意值。

import numpy as np# 创建形状为(2, 2)的未初始化数组
empty_arr = np.empty((2, 2))

k. 使用numpy.diag函数

        可以使用numpy.diag函数创建对角矩阵或从给定数组的对角线元素创建数组。

import numpy as np# 创建3x3的对角矩阵,对角线元素为[1, 2, 3]
diag_arr = np.diag([1, 2, 3])# 从给定数组的对角线元素创建数组
arr = np.array([1, 2, 3])
diag_from_arr = np.diag(arr)

l. 使用numpy.tile函数

        可以使用numpy.tile函数通过重复数组来创建新数组。

import numpy as np# 创建重复的一维数组
arr = np.array([1, 2, 3])
tiled_arr = np.tile(arr, 2)# 创建重复的二维数组
arr2d = np.array([[1, 2], [3, 4]])
tiled_arr2d = np.tile(arr2d, (2, 3))

m. 使用numpy.meshgrid函数

        可以使用numpy.meshgrid函数创建一个多维坐标网格。

import numpy as np# 创建一个二维坐标网格
x = np.array([1, 2, 3])
y = np.array([4, 5])
X, Y = np.meshgrid(x, y)

n. 使用numpy.fromfunction函数

        可以使用numpy.fromfunction函数根据元素的索引值创建数组。

import numpy as np# 创建一个形状为(3, 3)的数组,根据元素的索引值计算元素值
def func(x, y):return x + yarr = np.fromfunction(func, (3, 3))

o. 使用numpy.loadtxt函数

        可以使用numpy.loadtxt函数从文本文件中加载数据创建数组。

import numpy as np# 从文本文件加载数据创建数组
arr = np.loadtxt('data.txt')

待补充

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

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

相关文章

2023Q2全球可穿戴腕带出货量达 4400 万台

全球可穿戴设备市场在2023年第二季度继续保持增长态势,总出货量达到了4400万台,同比增长了6%。这一增长得益于消费者对于可穿戴设备的需求不断增加,以及不同细分市场的需求反弹。 根据市场研究机构 Canalys 的最新报告,全球可穿戴…

Android EditText筛选+选择功能开发

在日常开发中经常会遇到这种需求,EditText既需要可以筛选,又可以点击选择。这里筛选功能用的是AutoCompleteTextView,选择功能使用的是第三方库https://github.com/kongzue/DialogX。 Android AutoCompleteTextView(自动完成文本框)的基本使用…

【物联网】简要解释RTK(Real-Time Kinematic)>>实时动态差分定位

引言: RTK(Real-Time Kinematic)技术是一种基于差分GPS的高精度定位技术,它通过实时通信和数据处理,能够提供厘米级甚至亚米级的定位精度。RTK技术在许多领域都得到了广泛应用,如测绘、航空航天、农业等。本…

详解Nacos和Eureka的区别

文章目录 Eureka是什么Nacos是什么Nacos的实现原理 Nacos和Eureka的区别CAP理论连接方式服务异常剔除操作实例方式自我保护机制 Eureka是什么 Eureka 是Spring Cloud 微服务框架默认的也是推荐的服务注册中心, 由Netflix公司与2012将其开源出来,Eureka基于REST服务开发,主要用…

【C++STL基础入门】list改、查操作

文章目录 前言一、list查操作1.1 迭代器循环1.2 for_each函数 二、list改操作2.1 迭代器修改2.2 assign函数2.3 运算符 总结 前言 C标准模板库(STL)是C语言中非常重要的部分,它提供了一组通用的模板类和函数,用于处理常见的数据结…

七、运算符

运算符 1.运算符1.1.赋值运算符1.2.算数运算符1.3.自增和自减运算符1.4.比较运算符1.5.逻辑运算符1.6.位运算符1.6.1.按位与运算1.6.2.按位或运算1.6.3.按位取反运算1.6.4.按位异或运算1.6.5.移位操作1.6.6.复合赋值运算符1.6.7.三元运算符1.6.8.运算符优先级 1.7.训练11.8.训练…

win系统环境搭建(九)——Windows安装chatGPT

windows环境搭建专栏🔗点击跳转 win系统环境搭建(九)——Windows安装chatGPT 本系列windows环境搭建开始讲解如何给win系统搭建环境,本人所用系统是腾讯云服务器的Windows Server 2022,你可以理解成就是你用的windows…

上位机在自动化控制中的作用和优势是什么?

上位机在自动化控制中的作用和优势是什么? 自动化控制编程领域包括单片机、PLC、机器视觉和运动控制等方向。输入“777”,即刻获取关于上位机开发和数据可视化的专业学习资料,近年来,上位机编程逐渐兴起,正在逐步替代…

亚马逊、敦煌网、国际站自养号测评需要哪些资源与技术门槛?

测评服务商说的天花乱坠,实际真假难辨,FB等社交软件自找测评犹如大海捞针。产品都要上架了,靠谱的测评服务还是没找到,亚马逊测评求人不如求己,今天来教你怎么养一批安全、可控的买家号。 亚马逊等跨境平台测评自养号…

【运维篇】三、SLF4J与Logback

文章目录 0、Java的门面设计模式1、SLF4J2、作用3、调试4、SpringBoot采用SLF4JLogback5、切换SpringBoot的日志框架6、logback的配置加载7、logback的配置组成8、logback之logger9、logback之appender10、logback之pattern11、appender的Filter12、logback.xml全解释13、logba…

【校招VIP】测试方案之测试需求分析

考点介绍: 需求分析就是要弄清楚用户需要的是什么功能,用户会怎样使用系统。这样我们测试的时候才能更加清楚的知道系统该怎么样运行,才能更好的设计测试用例,才能更好的测试。 测试方案之测试需求分析-相关题目及解析内容可点击…

Qt事件处理

1. 事件 众所周知Qt是一个基于C的框架,主要用来开发带窗口的应用程序(不带窗口的也行,但不是主流)。我们使用的基于窗口的应用程序都是基于事件,其目的主要是用来实现回调(因为只有这样程序的效率才是最高…

优化系统报错提示信息,提高人机交互(一)

1、常规报错及处理 package com.example.demo.controller;import com.example.demo.service.IDemoService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.w…

机器视觉应用系统包括哪些硬件?

导语:机器视觉是一个软硬件相结合的综合技术,需要软件对图像做处理,也需要硬件提供稳定和高质量的图像,两者同样重要。作为开发,软件模块比较熟悉,硬件系统的相关知识储备弱一些,本文对机器视觉…

卷运维不如卷网络安全

最近发现很多从事运维的选择了辞职,重新规划自己的职业发展方向。运维工程师这个岗位在IT行业里面确实是处于最底层的,不管什么环节出现问题,基本都是运维背锅。背锅也就罢了,薪资水平也比不上别的岗位。 一般运维的薪资水平大多数…

LeetCode 2596. 检查骑士巡视方案【数组,模拟】1448

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

云计算的未来:云原生架构和自动化运维的崭露头角

文章目录 云原生架构:重新定义应用开发和部署什么是云原生架构?为什么云原生架构重要?1. 弹性和伸缩性2. 故障隔离3. 更快的交付4. 资源利用率5. 多云支持 云原生架构的实践步骤 1:容器化步骤 2:微服务步骤 3&#xff…

JavaWeb后端开发 JWT令牌解析 登录校验 通用模板/SpringBoot整合

目录 实现思路 相关技术的解析 ​编辑会话跟踪三个方案 JWT令牌技术 ​生成令牌 校验令牌 登录下发令牌 实现思路 通过登录成功的标记来检测,在每个接口前做一个标记判断是否登录,若没登录则返回错误信息,并使前端退出.但这样较为繁琐,因此我们可以通过一种统一拦截的技…

R语言-关于颜色

目录 颜色 示例 R 颜色板 参考: 颜色 什么场景会用到颜色?比如在绘图过程中,为了让图更好看,有的时候,需要选择使用不同的颜色进行绘制或者填充。本文提供了R颜色的相关参数。 在R中,可以通过颜色下标…

Flask框架-1-[群聊]: flask-socketio实现websocket的功能

一、项目结构 flask_websocket |---static |---js |---jquery-3.7.0.min.js |---socket.io_4.3.1.js |---templates |---home |---group_chat.html |---index.html |---app.py 1.1、python环境 python3.9.0 1.2、依赖包 Flask2.1.0 eventlet0.33.3 Flask-SocketIO5.3.4 1.…