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

news2024/11/18 7:43:25

目录

一、前言

二、实验环境

三、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 np

print("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 + y

arr = np.fromfunction(func, (3, 3))

o. 使用numpy.loadtxt函数

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

import numpy as np

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

待补充

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

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

相关文章

旋转链表-双指针思想-LeetCode61

题目要求:给定链表的头结点,旋转链表,将链表每个节点向右移动K个位置。 示例: 输入:head [1,2,3,4,5], k2 输出:[4,5,1,2,3] 双指针思想: 先用双指针策略找到倒数K的位置,也就是(…

根据商品ID获得淘宝商品详情, 获得淘宝商品详情高级版,获得淘宝商品评论, 获得淘宝商品快递费用 ,获得淘口令真实,批量获得淘宝商品上下架时间)

参数说明 通用参数说明 参数不要乱传,否则不管成功失败都会扣费url说明 https://api-gw.…….cn/平台/API类型/ 平台:淘宝,京东等, API类型:[item_search,item_get,item_search_shop等]version:API版本key:调用key,测试key:test_…

火山引擎A/B测试在消费行业的案例实践

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,火山引擎数智平台举办了“走进火山-全链路增长:数据飞轮转动消费新生力”的活动,其中火山引擎数智平台DataTester产品负责人…

家居设计软件Live Home 3D Pro mac中文版特点介绍

Live Home 3D Pro mac是一款专业的3D家居设计软件,可以帮助用户轻松创建和设计家居平面图和3D模型,并进行渲染和虚拟漫游。​​​​​​​ ​Live Home 3D Pro mac软件特点 1. 界面友好:Live Home 3D Pro的界面友好,操作简单方便…

MyBatis基础之SqlSession

SqlSession 线程安全问题 当你翻看 SqlSession 的源码时,你会发现它只是一个接口。我们通过 MyBatis 操作数据库,实际上就是通过 SqlSession 获取一个 JDBC 链接,然后操作数据库。 SqlSession 接口有 3 个实现类: #实现类1Defa…

北斗+渔业:且看北斗卫星如何提升渔业监管水平

近日,为确保渔业船舶海上航行安全和管理,海南省农业农村厅近日发布通告:全省小型海洋渔船须于今年9月30日前完成北斗船载终端安装,大中型海洋渔船须于今年11月30日前同时完成北斗船载终端和“插卡式AIS”终端安装。 近年来&#x…

两种风格的纯CSS3加载动画

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>加载动画</title><style>.loader {w…

调用feign接口时手动设置请求头信息

调用feign接口手动设置请求头 一 需求场景&#xff1a;二 解决方法2.1 feign接口添加RequestHeader的注解2.2 provider正常从请求头获取参数2. 3 consumer手动传参2.4 测试 一 需求场景&#xff1a; 我们在provider服务有些参数是从请求头中获取的&#xff0c;但是consumer服务…

单元测试的重要性:编写更安全、更可靠的代码

在软件开发过程中&#xff0c;测试是非常重要的一环。而在众多的测试方法中&#xff0c;单元测试占据了不可忽视的地位。那么&#xff0c;为什么我们需要进行单元测试呢&#xff1f;以下将从理论和实践两方面进行详细的解释。 一、单元测试的定义和目的 单元测试是指对软件中的…

FullGC了怎么办?

什么情况下回触犯FullGC 使用了大对象 //大对象会直接进入老年代在程序中长期持有了对象的引用 //对象年龄达到指定阈值也会进入老年代JVM内存设置不合理 FullGC出现的表象 CPU飙升或忽高忽低&#xff1b;程序性能不问题&#xff0c;接口响应时间比较长。 如何判断FullGC …

ChatGLM GPU多卡并行训练

1.为什么要使用多GPU并行训练 简单来说,有两种原因:第一种是模型在一块GPU上放不下,两块或多块GPU上就能运行完整的模型(如早期的AlexNet)。第二种是多块GPU并行计算可以达到加速训练的效果。想要成为“炼丹大师“,多GPU并行训练是不可或缺的技能。 2. 常见的多GPU训练方…

探讨UUID和Secrets:确保唯一性与数据安全的利器

&#x1f600;前言 在现代软件开发中&#xff0c;唯一标识符&#xff08;UUID&#xff09;和机密信息的处理是至关重要的。UUID是用于唯一标识数据记录和对象的128位值&#xff0c;确保了全球范围内的唯一性。同时&#xff0c;Python的secrets模块为处理机密信息提供了强大的随…

构造二叉树(已知前序遍历,中序遍历,求后序遍历)

此题涉及到的<unordered_map>所建立的哈希表,没有多复杂&#xff0c;但对构造树方面确是很方便&#xff0c; 有时候掌握一些这样的额外知识&#xff0c;对编程大有帮助&#xff0c;例如vector容器&#xff0c;string类型等等。千里之行&#xff0c;始于足下。不停积累编…

GE WES5302-150 数字量控制模块

GE WES5302-150 是一款数字量控制模块&#xff0c;通常用于工业自动化和控制系统中&#xff0c;主要用于数字信号的输入和输出控制。以下是该模块的一些主要产品功能&#xff1a; 数字量输入&#xff1a;WES5302-150 模块通常具有多个数字输入通道&#xff0c;用于接收数字信号…

浏览量5.54亿,“平替大军”击退“钱包刺客”?丨小红书消费趋势分析

当代年轻人的消费观念&#xff0c;从贷款买大牌的“精致穷”&#xff0c;逐渐演变为人间清醒式地购物...他们爱上麦当劳的“穷鬼套餐”&#xff0c;爱喝瑞辛9.9元畅饮&#xff0c;爱和小学生成为“饭搭子”吃小饭桌&#xff0c;爱买低价打折出售的剩菜盲盒&#xff0c;爱出门吃…

Java“牵手”淘宝商品列表页数据采集+淘宝商品价格数据排序,淘宝API接口申请指南

淘宝商城商品平台介绍如下&#xff1a; 淘宝网是亚洲最大的购物网站&#xff0c;由阿里巴巴集团于2003年5月创立。淘宝网在不断发展的过程中&#xff0c;逐步形成了具有特色的购物网站。淘宝商城是淘宝网全新打造的B2C购物平台&#xff0c;成立于2008年4月10日。随着淘宝网规模…

用户参数(zabbix-agent)

-s 指向被监控端地址 -p 指向被监控端端口 -k 指向key的名字 监控内存使用率 agent vi a.conf server web界面 对数据库的avg进行监控 systemctl 创建监控项 另一台 重启 agent 监控请求数 运行时间 对自定义key的理解 写下想要监控的任何参数命令&#xff0c;利用zabbix…

【C++面向对象侯捷】1.C++编程简介

文章目录 视频来源&#xff1a;我的百度网盘

arcgis 面要素相交

假设有绿色面图层和紫色面图层&#xff0c;绿色图层有两个区域aa和bb&#xff0c;现在想得到紫色图层分别落在aa和bb上的部分&#xff0c;并附上属性值。 要用到相交功能。 ArcToolbox - Analysis Tools - Overlay - Intersect 输入&#xff1a;把涉及到的两个图层都输入进去…