Numpy数组的创建(第一讲)

Numpy数组的创建 (第1讲)
       在这里插入图片描述

🍹博主 侯小啾 感谢您的支持与信赖。☀️
🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ

✨本博客收录于专栏Python数据分析30讲.。
✨专栏特点:
    ①逻辑清晰,循序渐进,符合初学者思维,内容友好程度高。
    ②内容精炼,且不失重点,入门时间周期短。性比价高。
    ③能够兼容非科班,如金融,经济,统计,数学等专业的小伙伴。
    ④附实战案例加持,搭乘数分精通之路的直通车!

✨更多精彩内容敬请期待,小啾持续为您输出中!

文章目录

  • 1.认识`numpy`数组
  • 2. `array( )` 函数
    • 2.1 `array()`函数创建一维数组
    • 2.2`array()`函数创建多维数组
    • 2.3 避坑:若传入字符串
  • 3. `arange()`函数
  • 4. `linspace()`函数 --等差数列
  • 5. `logspace()`函数 --等比数列
  • 6.`zeros`函数
  • 7. `ones()`函数
  • 8. `empty()`函数 创建全空数组
  • 9. `full()`函数 创建指定值填充的数组
  • 10. `eye()`函数 创建单位矩阵
  • 11. `diag()`方法 创建对角线矩阵数组


1.认识numpy数组

NumPy 数组是 NumPy 库中最重要的数据结构之一。所谓numpy数组,即ndarray对象。
它是一个一维或多维数组对象,可以存储相同类型的元素,并提供了许多功能强大的操作和函数来处理和分析数组数据。
通过使用 NumPy 数组,你可以进行各种数学运算、统计分析、线性代数操作、图像处理等。NumPy 数组是数据科学和机器学习领域中常用的工具,为快速、高效的数值计算提供了基础。
数组的维度,与线性代数中的矩阵类似。大家也完全可以按照矩阵的结构来理解。
这里用简单的文字示例,向大家传达数组从低维度到高维度的数据结构分布:

一维数组:
[1,2,3,4,5]

该数组shape为:(5,)

二维数组:
[ [1,2,3,4,5],
[6,7,8,9,10]
[11,12,13,14,15] ]


该数组的shape为(3,5)

三维数组:
[
[ [1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15] ]

[ [1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15] ]
]


该数组的shape为(2,3,5)

依次类推,按此规律延伸至n维数组。

n维数组······


2. array( ) 函数

Numpy数组可以通过array()函数创建。
array()函数的语法如下:

array(object,dtype=None, copy=True, order=‘K’, subok=False, ndmin=0)

odject:任何具有数组接口方法的对象。通常也可以理解为是一个可迭代对象 即可。
dtype:数据类型。
copy:布尔类型值,是否复制,默认为True。设为true可以避免对数组数据有修改操作时影响到原数组。具体见下文 “数组的复制” 部分。
order:元素在内存中出现的顺序,可以是"K"、“A”、“C”、"F"四个字符。
默认为“K”,表示元素在内存中出现的顺序。“C”表示按行排列,“F”表示按列排列。如果object是一个数组,则还可以是"A",表示原顺序。
subok:布尔类型。默认为False,表示返回的数组默认为基类数组。如果为True则将传递子类。
ndmin:生成数组的 最小维度。(最小,意味着可以大于这个数字,当不足这个数字时,补充到这个数字。)


2.1 array()函数创建一维数组

以一维数组为例,一个使用array()函数创建numpy数组的简单示例如下:

import numpy as np

array1 = np.array([1, 2, 3, 4, 5])  # 传入一个列表对象
print(array1)  # 查看array1
print(type(array1))  # 查看array1的类型
print(array1.shape)  # 查看array1的shape

这里给array()函数传入了一个列表对象,成功创建出一个ndarray对象。代码输出效果如下:
              在这里插入图片描述
通过ndarrayshape属性,可以查看数组的shape。


2.2array()函数创建多维数组

以创建二维数组为例,可以给array()函数传入一个可以描述数组结构的列表,这样就可以得到预期中的数组。
这样的列表的形式需要规整,且数据类型要统一,形如:

[ [1,2,3], [4,5,6] ]

代码示例如下:

import numpy as np

list1 = [[1,2,3,4,5],[6,7,8,9,10]]
array1 = np.array(list1)
print(array1)
print(type(array1))
print(array1.shape)

执行效果:
              在这里插入图片描述


2.3 避坑:若传入字符串

我们知道,字符串也是一种可迭代对象。
但是如果若传入的是一个长度为n个字符的字符串,则不会得到一个长度为n的一维数组。

import numpy as np

array1 = np.array("abcdefg")
print(array1)

              在这里插入图片描述


输出结果是一个长度为1的一维数组。程序不会选择对字符串进行分割。
虽然我们一般不会选择传入字符串,但是还是要注意这个误区。


3. arange()函数

PythonNumPy库中,arange函数用于创建一个等差数列数组。
该函数返回一个从起始值到终止值(不包括终止值)之间的指定步长的一维数组。

arange函数的基本语法如下:

numpy.arange(start, stop, step=1, dtype=None)

参数说明:

  • start:起始值。
  • stop:终止值(不包括在结果中)。
  • step:可选参数,步长(默认为1)。
  • dtype:可选参数,输出数组的数据类型。

代码使用示例:

import numpy as np

# 创建一个从0到9的一维数组,默认步长为1
arr1 = np.arange(10)
print(arr1)
print("=================================================")

# 创建一个从1到10(不包括10)的一维数组,步长为2
arr2 = np.arange(1, 10, 2)
print(arr2)
print("=================================================")

# 创建一个从5到1(不包括1)的递减一维数组,步长为-1
arr3 = np.arange(5, 0, -1)
print(arr3)

代码执行效果:
       在这里插入图片描述


import numpy as np

array1 = np.arange(0, 10, 0.2)
print(array1)

       在这里插入图片描述

(此时结果数据类型是浮点类型)


4. linspace()函数 --等差数列

PythonNumPy库中,linspace函数用于创建一个等间距的线性数列数组。
该函数返回一个从起始点到终止点之间的指定数量的均匀间隔数组。
linspace函数的基本语法如下:

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

参数说明:

  • start:起始点。
  • stop:终止点。
  • num:可选参数,要生成的等间距数列中的元素数量(默认为50)。
  • endpoint:可选参数,如果为True,则终止点包含在等间距数列中;如果为False,则终止点不包含在等间距数列中(默认为True)。
  • retstep:可选参数,如果为True,则返回结果中包含数列的步长;如果为False(默认),则不包含步长。
  • dtype:可选参数,输出数组的数据类型。

代码示例:

import numpy as np

# 创建一个包含5个元素的等间距数列,默认包含终止点
arr1 = np.linspace(1, 10, 5)
print(arr1)
print("=================================================")

# 创建一个包含4个元素的等间距数列,不包含终止点,并返回数列的步长
arr2, step = np.linspace(0, 1, 4, endpoint=False, retstep=True)
print(arr2)
# 输出: [0.   0.25 0.5  0.75]
print(step)
print("=================================================")

# 创建一个包含6个元素的等间距数列,指定数据类型为整数
arr3 = np.linspace(1, 10, 6, dtype=int)
print(arr3)

代码执行效果:
       在这里插入图片描述


5. logspace()函数 --等比数列

PythonNumPy库中,logspace函数用于创建一个等比数列形式的数组。
logspace函数的基本语法如下:

numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

参数说明:

  • start:起始点的对数值(默认为0)。
  • stop:终止点的对数值。
  • num:可选参数,要生成的等比数列中的元素数量(默认为50)。
  • endpoint:可选参数,如果为True,则终止点包含在等比数列中;如果为False,则终止点不包含在等比数列中(默认为True)。
  • base:可选参数,对数的底数(默认为10.0)。
  • dtype:可选参数,输出数组的数据类型。

代码示例:

import numpy as np

# 创建一个包含5个元素的等比数列,默认以底数10计算
arr1 = np.logspace(1, 5, 5,dtype='int')
print(arr1)
print("=========================================================")
# 创建一个包含10个元素的等比数列,以底数2计算
arr2 = np.logspace(1, 10, 10, base=2,dtype='int')
print(arr2)
print("=========================================================")
# 创建一个包含6个元素的等比数列,以底数e(自然对数的底数)计算
arr3 = np.logspace(0, 5, 6, base=np.e)
print(arr3)

代码执行效果:
      在这里插入图片描述


6.zeros函数

PythonNumPy库中,zeros函数用于创建一个指定形状且元素全为0的数组。
该函数返回一个由0组成的数组。

zeros函数的基本语法如下:

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

参数说明:

  • shape:数组的形状,可以是一个整数或一个由整数组成的元组。
  • dtype:可选参数,数组的数据类型,默认为浮点型。
  • order:可选参数,指定数组在内存中的布局方式,可以是’C’(按行)、‘F’(按列)或’A’(原始顺序,默认)。

代码示例:

import numpy as np

# 创建一个形状为(2, 3)的数组,元素全为0
arr1 = np.zeros((2, 3))
print(arr1)

print("=================================================")

# 创建一个形状为(3, 4, 2)的三维数组,元素全为0
arr2 = np.zeros((3, 4, 2))
print(arr2)

代码执行效果:
      在这里插入图片描述

zeros函数创建的数组中的元素均为0。如果希望创建初始值非零的数组,可以使用ones函数来创建元素全为1的数组,或者使用full函数来创建指定初始值的数组。


7. ones()函数

在Python的NumPy库中,ones函数用于创建一个指定形状且元素全为1的数组。该函数返回一个由1组成的数组。

ones函数的基本语法如下:

numpy.ones(shape, dtype=float, order='C')

参数说明:

  • shape:数组的形状,可以是一个整数或一个由整数组成的元组。
  • dtype:可选参数,数组的数据类型,默认为浮点型。
  • order:可选参数,指定数组在内存中的布局方式,可以是’C’(按行)、‘F’(按列)或’A’(原始顺序,默认)。

代码示例:

import numpy as np

# 创建一个形状为(2, 3)的数组,元素全为1
arr1 = np.ones((2, 3))
print(arr1)
print("=================================================")

# 创建一个形状为(3, 4, 2)的三维数组,元素全为1
arr2 = np.ones((3, 4, 2))
print(arr2)

代码执行效果:
      在这里插入图片描述


8. empty()函数 创建全空数组

PythonNumPy库中,empty函数用于创建一个指定形状和数据类型的空数组。该函数返回一个未初始化的数组,即它的元素可以是任意值。

empty函数的基本语法如下:

numpy.empty(shape, dtype=float, order='C')

参数说明:

  • shape:数组的形状,可以是一个整数或一个由整数组成的元组。
  • dtype:可选参数,数组的数据类型,默认为浮点型。
  • order:可选参数,指定数组在内存中的布局方式,可以是’C’(按行)、‘F’(按列)或’A’(原始顺序,默认)。

代码示例:

import numpy as np

# 创建一个2x3的空数组
arr1 = np.empty((2, 3))
print(arr1)

print("======================================================================")

# 创建一个3维的空数组
arr2 = np.empty((2, 3, 4))
print(arr2)

代码执行效果:
      在这里插入图片描述

需要注意的是,empty函数创建的数组不会像zeros函数一样将元素初始化为0,而是保留了数组在内存中原有的内容。因此,使用empty函数创建的数组的值是未知的,可能包含任意值。如果希望创建一个初始值全为0的数组,可以使用zeros函数;如果希望创建一个初始值全为1的数组,可以使用ones函数。


9. full()函数 创建指定值填充的数组

PythonNumPy库中,full函数用于创建一个指定形状和初始值的数组。该函数返回一个由指定值组成的数组。

full函数的基本语法如下:

numpy.full(shape, fill_value, dtype=None, order='C')

参数说明:

  • shape:数组的形状,可以是一个整数或一个由整数组成的元组。
  • fill_value:初始值,可以是一个标量或一个数组。
  • dtype:可选参数,数组的数据类型,默认为None(使用fill_value的数据类型)。
  • order:可选参数,指定数组在内存中的布局方式,可以是’C’(按行)、‘F’(按列)或’A’(原始顺序,默认)。

代码示例:

import numpy as np

# 创建一个形状为(2, 3)的数组,所有元素都为2.5
arr1 = np.full((2, 3), 2.5)
print(arr1)

print("=================================================")

# 创建一个形状为(3, 4, 2)的三维数组,所有元素都为7
arr2 = np.full((3, 4, 2), 7)
print(arr2)

代码执行效果:
      在这里插入图片描述


10. eye()函数 创建单位矩阵

PythonNumPy库中,eye函数用于创建一个单位矩阵。
单位矩阵是一个正方形矩阵,对角线上的元素为1,其余元素为0。

eye函数的基本语法如下:

numpy.eye(N, M=None, k=0, dtype=float, order='C')

参数说明:

  • N:生成的单位矩阵的行数。
  • M:可选参数,生成的单位矩阵的列数,默认为None(即生成N×N的方阵)。
  • k:可选参数,对角线偏移量。正值表示对角线位于主对角线之上,负值表示对角线位于主对角线之下,默认为0(即主对角线)。
  • dtype:可选参数,输出数组的数据类型,默认为浮点型。
  • order:可选参数,指定数组在内存中的布局方式,可以是’C’(按行)、‘F’(按列)或’A’(原始顺序,默认)。

代码示例:

import numpy as np

# 创建一个3×3的单位矩阵
arr1 = np.eye(3)
print(arr1)
print("=================================================")

# 创建一个2×4的单位矩阵,并将对角线向上偏移1个位置
arr2 = np.eye(2, 4, k=1)
print(arr2)
print("=================================================")

# 创建一个5×5的整数类型的单位矩阵
arr3 = np.eye(5, dtype=int)
print(arr3)

代码执行效果:
      在这里插入图片描述


11. diag()方法 创建对角线矩阵数组

PythonNumPy库中,diag函数用于:

①提取一个方阵的对角线元素
或者
②构造一个以给定一维数组为对角线元素的方阵。

diag函数的基本语法如下:

numpy.diag(v, k=0)

参数说明:

  • v:输入的一维数组。
  • k:可选参数,对角线偏移量。正值表示对角线位于主对角线之上,负值表示对角线位于主对角线之下,默认为0(即主对角线)。

示例使用:

import numpy as np

# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 提取数组的主对角线元素
diag_elements = np.diag(arr)
print(diag_elements)
print("=================================================")

# 构造一个以给定一维数组为对角线元素的方阵
diagonal1 = [1, 2, 3]
matrix1 = np.diag(diagonal1)
print(matrix1)
print("=================================================")

# 在主对角线上方构造一个以给定一维数组为对角线元素的方阵
diagonal2 = [4, 5, 6]
matrix2 = np.diag(diagonal2, k=1)
print(matrix2)

代码执行效果:
      在这里插入图片描述

diag函数可以用来提取一个方阵的对角线元素,也可以用来构造一个以给定一维数组为对角线元素的方阵。通过设置k参数可以控制对角线的偏移。当k=0时,提取或构造的是主对角线上的元素;当k>0时,提取或构造的是主对角线上方的元素;当k<0时,提取或构造的是主对角线下方的元素。


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

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

相关文章

Modbus数据采集模块是什么?

随着工业自动化的快速发展&#xff0c;数据采集已成为现代工厂不可或缺的一环。在众多通信协议中&#xff0c;Modbus因其开放、简单、可靠的特点而广受青睐。那么&#xff0c;什么是Modbus数据采集模块&#xff0c;它又有哪些应用呢&#xff1f; 一、什么是Modbus数据采集模块…

打补丁,生成.diff文件

作者&#xff1a;爱塔居 文章目录 目录 前言 步骤 一、在根目录上&#xff0c;输入添加指令 二、输入修改内容指令 三、生成补丁 前言 自己的理解&#xff0c;仅供参考&#xff0c;欢迎指正。 补丁的话&#xff0c;在我看来就是方便评审&#xff0c;更方便看修改代码吧。 步骤…

2024年网络安全比赛--系统渗透测试(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.在渗透机中对服务器主机进行信息收集&#xff0c;将服务器开启的端口号作为 Flag 值提交; 2.在渗透机中对服务器主机进行渗透&#xff0c;在服务器主机中获取服务器主机名称&#xff…

智能优化算法应用:基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.社交网络算法4.实验参数设定5.算法结果6.参考…

【C语言】程序设计加密解密

&#x1f6a9;write in front&#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博…

三层交换机配置DHCP服务

第一步&#xff1a;进入二层交换机Switch 1&#xff09;输入命令&#xff1a; Switch(config)#vlan 10 Switch(config)#vlan 20 2&#xff09;修改F0/1 和F0/2为access口&#xff0c;F0/24为trunk口 第二步&#xff1a;进入三层交换机 1&#xff09;输入命令 Switch(config)#…

Vulnhub项目:EMPIRE: LUPINONE

一、靶机地址 靶机地址&#xff1a;Empire: LupinOne ~ VulnHub 靶机描述&#xff1a; 来&#xff0c;看一看&#xff0c;同样的配方&#xff0c;不同的设计&#xff0c;难度为中等&#xff0c;迷路了就成困难了&#xff0c;不得不说&#xff0c;还真是&#xff01; 几次陷入…

kafka windows版本的下载安装,并且本地使用(亲测有效)

目录 1 问题2 下载 1 问题 本地启动一个kafka &#xff0c;然后可以实现生产者 消费者 2 下载 https://downloads.apache.org/kafka/ 选择一个版本下载 下载之后解压 修改配置 修改好之后&#xff0c;就保存&#xff0c;之后先启动zookper &#xff0c;之后再启动 ka…

通过内网穿透模拟私服

通过内网穿透模拟私服nexus 1.问题引出 在学习黑马程序员2023新版JavaWeb开发教程的maven高级时&#xff0c;需要用到私服&#xff0c;黑马提供的资料中私服地址不能使用&#xff0c;需要自己搭建一个私服。 若使用传统的方式将私服部署到本地PC无法模拟真实的私服连接情况&…

VINS编译, opencv多版本的原因导致的问题

1. 通用问题 问题一 编译时报错 error: ‘CV_GRAY2RGB’ was not declared in this scope 等 解决方法 在报错文件上添加头文件 #include <opencv2/imgproc/imgproc_c.h> 单独遇到CV_AA的报错时&#xff0c;也可以将 CV_AA 改为 cv::LINE_AA 问题二 编译时报错 erro…

[python库] mistune库的基本使用

前言 mistune库是一个解析Markdown的利器&#xff0c;使用起来非常简单。当我们想要解析Markdown格式的文档时&#xff0c;只需两步就能将其转换成html格式。如下&#xff1a; import mistune mistune.html(YOUR_MARKDOWN_TEXT)安装方式也非常简单&#xff0c;dddd&#xff1…

如何在 PyQt 中实现异步数据库请求

需求 开发软件的时候不可避免要和数据库发生交互&#xff0c;但是有些 SQL 请求非常耗时&#xff0c;如果在主线程中发送请求&#xff0c;可能会造成界面卡顿。这篇博客将会介绍一种让数据库请求变得和前端的 ajax 请求一样简单&#xff0c;且不会阻塞界面的异步请求方法。 实…

如何使用phpStudy本地快速搭建网站并内网穿透远程访问

文章目录 使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2.2 映…

【webpack】初始化

webpack 旧项目的问题下一代构建工具 Vite 主角 &#xff1a;webpack安装webpack1&#xff0c;mode的选项2&#xff0c;使用source map 精准定位错误行数3&#xff0c;使用watch mode(观察模式)&#xff0c;自动运行4&#xff0c;使用webpack-dev-server工具&#xff0c;自动刷…

python flask Jinja2模板学习

分类很好的一篇文章 Jinja2模板语法 Jinja2里常见的三种定界符&#xff1a; (1) 语句 {% ... %}(2) 表达式 {{ ... }}(3) 注释 {# ... #} {%set adazhaung%} 语句设置变量{{a}} 表达式{% if 2>1 %}控制语句以{%endif%}结尾 Jinja2支持使用“.”获取变量的属…

ERP软件定制开发对企业的优势|app小程序搭建

ERP软件定制开发对企业的优势|app小程序搭建 随着科技的不断发展&#xff0c;企业管理也面临了更多的挑战。为了更好地适应市场需求和提高运营效率&#xff0c;越来越多的企业开始选择使用ERP软件进行管理。然而&#xff0c;市场上现成的ERP软件并不能完全满足企业的需求&#…

【移动端vant 地址选择滑动不了】

分析&#xff1a; H5页面直接在浏览器打开是没有任何问题的&#xff0c;但是内嵌到小程序中就会出现&#xff0c;目前已出现在抖音&#xff0c;快手&#xff0c;小程序中&#xff0c;其他的没有试 大致看了一下&#xff0c;滑动不了的原因&#xff0c;可能是页面禁止滑动或滚动…

人工智能企业引入S-SDLC,推动安全能力大跃升,保障AI技术体系深化落地

某人工智能公司是国际知名的上市企业&#xff0c;核心技术处于世界前沿水平。多年来&#xff0c;该企业在智慧教育、智慧医疗、智慧城市、智慧司法、金融科技、智能汽车、运营商、消费者等领域进行深度技术赋能&#xff0c;深入推进各个行业的智能化、数字化转型建设。 人工智能…

第二十一 网络通信

网络通信 21.1 网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。 21.1.1 局域网与互联网 实现两台计算机的通信&#xff0c;必须用一个网络线路来连接两台计算机 21.1.2 网络协议 1.ip协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议 2…

使用cpolar完成内网穿刺

cpolar官网上有一句评论&#xff1a;cpolar是用过最简单的内网穿刺工具&#xff01; 实际体验下来&#xff0c;cpolar确实是能够非常简单地实现内网穿刺 先说弊端&#xff0c;免费版的cpolar提供的穿刺地址&#xff0c;有效期为一天&#xff0c;进程连接数有限&#xff0c;如…