Numpy数组的创建(第1讲)

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

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

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

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

文章目录

  • 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/227385.html

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

相关文章

【GAMES101】三维变换

games101的第四节课讲了三维变换和观察变换&#xff0c;我们这里先记录一下三维变换的知识&#xff0c;后面再讲观察变换 齐次坐标下的三维变换 类似于解决之前二维变换平移的问题&#xff0c;三维变换下用齐次坐标通过增加一个维度来表示&#xff0c;第四个维度为1表示这是个…

Leetcode—213.打家劫舍II【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—213.打家劫舍II 算法思路 实现代码 class Solution { public:// 左闭右开int rob1(vector<int>& nums, int start, int end) {int n nums.size();int f0 0, f1 0, new_f 0;for(int i start; i < end…

C++ day58 每日温度 下一个更大元素

题目1&#xff1a;739 每日温度 题目链接&#xff1a;每日温度 对题目的理解 temperature[i]表示每天的温度&#xff0c;返回数组answer&#xff0c;answer[i]指对于第i天&#xff0c;下一个更高温度最近出现在几天后&#xff0c;如果气温在这之后都不会升高&#xff0c;用0…

论文精读 MOG2 阴影检测

An Improved Adaptive Background Mixture Model for Real-time Tracking with Shadow Detection 一种用于阴影检测实时跟踪的改进自适应背景混合模型 承接上一篇博客&#xff1a;论文精读 && MOG && 埃里克格里姆森-CSDN博客 目录 一、摘要 二、结论 三…

Spring Boot HTTP 400 错误的日志信息在哪里查看 ?

HTTP 400 一般来说是入参的某些字段的格式不对 Spring Boot项目启动后默认是不会把相应的日志打印在控制台的 需要在logback.xml里面做相关的配置才会打印出来 具体配置如下 <configuration><appender name"stdout" class"ch.qos.logback.core.Con…

西南科技大学C++程序设计实验九(多态二)

Point operator++ (int) { // 后置自增运算符重载 Point temp(*this); ++(*this); return temp; } void print() { cout << "x=" << x << ", y=" << y << endl; } private: int x; int y; }; int main() { P…

谷歌Gemini AI模型使用指南

引言 2023年12月7日&#xff0c;谷歌宣布推出其迄今为止功能最强大、最通用的多模态人工智能&#xff08;AI&#xff09;大模型&#xff1a;Gemini。根据最新的性能评估&#xff0c;Gemini在多项指标上已经超越了ChatGPT 4。 Gemini的使用教程 Gemini 模型从大到小分为Ultra…

[Linux] nginx配置的主配置文件

一、六个模块的作用 全局块&#xff1a;全局配置&#xff0c;对全局生效&#xff1b; events块&#xff1a;配置影响 Nginx 服务器与用户的网络连接&#xff1b; http块&#xff1a;配置代理&#xff0c;缓存&#xff0c;日志定义等绝大多数功能和第三方模块的配置&#xff1b;…

【VRTK】【VR开发】【Unity】11-甩臂移动

课程配套学习资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【概述】 除了一般的移动能力,VRTK还提供更为沉浸的甩臂移动。 【设定摇杆输入中间件】 在Hierarchy中展开Button Input Actions,其下生成两个新的空子对象…

【Flink系列四】Window及Watermark

3.1、window 在 Flink 中 Window 可以将无限流切分成有限流&#xff0c;是处理有限流的核心组件&#xff0c;现在 Flink 中 Window 可以是时间驱动的&#xff08;Time Window&#xff09;&#xff0c;也可以是数据驱动的&#xff08;Count Window&#xff09;。 Flink中的窗口…

翻译: 生成式人工智能的经济潜力 第2部分行业影响 The economic potential of generative AI

麦肯锡报告 翻译: 生成式人工智能的经济潜力 第一部分商业价值 The economic potential of generative AI 1. 行业影响 在我们分析的63个使用案例中&#xff0c;生成式人工智能有潜力在各行各业创造2.6万亿至4.4万亿美元的价值。其确切影响将取决于各种因素&#xff0c;比如…

Qt之QGraphicsView —— 笔记1:绘制简单图元(附完整源码)

效果 相关类介绍 QGraphicsView类提供了一个小部件,用于显示QGraphicsScene的内容。QGraphicsView在可滚动视口中可视化。QGraphicsView将滚动其视口,以确保该点在视图中居中。 QGraphicsScene类 提供了一个用于管理大量二维图形项的场景。请注意,QGraphicsScene没有自己的视…

Open-Falcon(一)环境配置

目录 ip划分一、主机准备二、环境配置2.1修改主机名、修改hosts文件2.2配置阿里源&#xff0c;安装工具2.3关闭防火墙、selinux2.4配置时间2.5安装go2.6安装redis2.7 安装mysql初始化MySQL表结构 ip划分 主机名IP服务open-faclon-server192.168.150.200open-faclon-serverngin…

nodejs微信小程序+python+PHP的智能停车系统-计算机毕业设计推荐django

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

select*from 查询语句返回null

1. 写了一个很简单查询全部数据的demo接口,结果一直返回null. 数据库明明有数据而且在console控制台也可以查到,但是用接口访问一直返回null 2.后发现原来是数据库中字段名和对象的属性名称对不上&#xff0c;所以可以在yml文件中加上 mybatis:configuration:map-underscore-…

如何搭建一套完整的智能安防视频监控平台?关于设备与软件选型的几点建议

安防视频监控系统主要由前端摄像机设备、视频显示设备、视频存储设备、安防应用软件/平台以及其它传输、辅助类设备组成。一般来说&#xff0c;安防监控系统具有可扩展和开放性&#xff0c;以方便未来的扩展和与其他系统的集成。今天我们就来介绍一下&#xff0c;搭建一套完整的…

Kubersphere应用【四】创建SpringBoot项目

一、生成Springboot项目 【地址】https://start.spring.io/ Spring在线生成项目工具&#xff0c;可以快速生成Spring Boot项目。选择要的依赖项&#xff0c;填写基本信息&#xff0c;点击【GENERATE】就可以生成一个可运行的Spring Boot项目。 二、IDEA导入项目 生成项目后,进…

LAMP和分离式LNMP部署

目录 一.什么是LAMP&#xff1f; 二.安装LAMP 先安装apache&#xff0c;httpd网页服务&#xff1a; 接着安装mysql&#xff1a; 安装php&#xff1a; 创建论坛&#xff1a; 三.安装分布式LNMP&#xff1a; 先安装nginx&#xff1a; 到另一台主机安装php&#xff1a; …

dtm分布式事务框架之SAGA 实战

一.dtm分布式事务框架之SAGA 1.1DTM介绍 DTM是一款开源的分布式事务管理器&#xff0c;解决跨数据库、跨服务、跨语言栈更新数据的一致性问题。 通俗一点说&#xff0c;DTM提供跨服务事务能力&#xff0c;一组服务要么全部成功&#xff0c;要么全部回滚&#xff0c;避免只更…

javaTCP协议实现一对一聊天

我们首先要完成服务端&#xff0c;不然出错&#xff0c;运行也要先运行服务端&#xff0c;如果不先连接服务端&#xff0c;就不监听&#xff0c;那客户端不知道连接谁 服务端 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.Actio…