关于python中数据分析的一些函数

首先先下载numpy函数库

如果使用的pycharm软件,可在设置中下载,在Python interpreter设置里,点击+号,搜索numpy点击下载即可

第一部分

1.array()函数

这是一个将类似数组的数据转为数组的函数,我们还可以控制其数组的维度。

numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0)

参数说明:

  1. object: 必要参数,array_like类型。它可以是任何类似数组的对象(如列表、元组、其他数组等),或者是实现了__array__方法的对象,该方法会返回一个数组。

  2. dtype: 可选参数,数据类型对象或字符串。用于指定创建数组时每个元素的数据类型。如果省略,则NumPy会尝试根据输入数据自动推断合适的数据类型。

  3. copy: 可选布尔值参数。默认为True,这意味着总是创建数据的副本。如果设置为False并且能够避免复制数据(例如,如果输入已经是NumPy数组且满足其他参数要求),则可能会共享内存。

  4. order: 可选参数,字符串类型,可以是'K'(保持输入顺序,尽可能),'C'(C风格的行主序),'F'(Fortran风格的列主序)。指定数组的内存布局。

  5. subok: 可选布尔值参数,默认为False,意味着返回的是基础NumPy类型的数组。如果设为True,允许返回与输入具有相同类型的子类数组。

  6. ndmin: 可选整数参数。指定生成数组的最小维度,如果必要的话,通过在前面添加轴来增加数组的维度。

    import numpy as np# 使用列表创建一个一维数组,默认数据类型为float
    data_list = [1, 2, 3, 4, 5]
    array_1d = np.array(data_list)
    print(array_1d)# 创建一个二维数组并指定数据类型为int32
    data_matrix = [[1, 2], [3, 4]]
    array_2d = np.array(data_matrix, dtype=np.int32)
    print(array_2d)# 不复制输入数据,而是共享内存
    data_tuple = (0.1, 0.2, 0.3)
    array_shared = np.array(data_tuple, copy=False)
    # 改变原始元组中的值会影响创建的数组
    data_tuple[0] = 1.0
    print(array_shared)# 指定ndmin为2,即使输入是一维数据也会创建二维数组
    one_dim_data = [6, 7, 8]
    forced_2d_array = np.array(one_dim_data, ndmin=2)
    print(forced_2d_array)

2.linespace()函数

该函数可以生成一段间距相同的数组,例如

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

参数说明:

  • start:生成数组的第一个元素。
  • stop:生成数组的最后一个元素。
  • num:生成的数组中元素的个数,默认为50。
  • endpoint:布尔值,决定是否包含stop值作为数组的一个元素,默认为True,即包含。
  • retstep:如果设置为True,则返回数组及步长。
  • dtype:可选的数据类型,如果不指定则根据输入数据自动推断。

上图就代表从1开始,到10结束,生成数量为10个的等差数组,他们之间的差值正好为1

3.zeros()和zeros_like()函数

在numpy函数库中,这俩函数都是用来生成全零数组的函数,但他们之间也稍有不同。

zeros()函数用于创建一个指定形状且所有元素均为零的数组,同时允许用户指定数组的数据类型。

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

参数说明:

  • shape:必需参数,可以是一个整数或者一个表示数组维度的元组,用来指定新数组的形状。
  • dtype:可选参数,用于指定数组元素的数据类型,默认为 numpy.float64
  • order:可选参数,用于指定数组在内存中的存储方式,可以是 'C'(按行优先,C语言风格)、'F'(按列优先,Fortran风格)或 'A'(任意,取决于最有效的方式)。

比如以下示例代码,则创建一个3x4的全为零的二维数组

# 创建一个形状为 (3, 4) 的全零浮点数数组
arr = np.zeros((3, 4))
print(arr)

zeros_like()函数则可以根据现有数组创建一个新的具有相同形状和数据类型,但所有元素都是零的数组。它不需要显式地指定形状和数据类型,而是从提供的输入数组中获取这些属性。

numpy.zeros_like(array, dtype=None, order='K', subok=True)

参数说明:

  • array:必需参数,是要参考其形状和数据类型的输入数组。
  • dtype:可选参数,允许你指定新的数据类型覆盖原数组的数据类型,如果不指定,则新数组与输入数组具有相同的数据类型。
  • order 和 subok 参数的功能类似于 numpy.zeros() 中对应的参数,不过在 numpy.zeros_like() 中它们通常不是很重要,因为输出数组通常会遵循输入数组的内存布局。
import numpy as np# 假设有一个已存在的数组
existing_arr = np.array([[1, 2, 3], [4, 5, 6]])# 使用 zeros_like 创建一个与 existing_arr 形状和数据类型相同的全零数组
new_zeros_arr = np.zeros_like(existing_arr)
print(new_zeros_arr)

总结来说,当你需要根据预定义的形状创建全零数组时,使用 numpy.zeros();而当你希望快速创建一个与现有数组具有相同形状和类型的新零数组时,使用 numpy.zeros_like() 更为便捷。

4.random系列,生成随机数数组

NumPy库的numpy.random模块来生成指定形状的随机数组。这里分别给出使用numpy.random生成随机浮点数数组和整数数组的例子:

生成一个4x6的随机小数数组

arr_random = np.random.rand(4,6)

生成整数随机数数组,第一个参数0和第二个参数9代表随机数范围,取不到9,第三个参数为数组结构

arr_random_int = np.random.randint(0,9,(4,6))

5.ndim和shape

在Python的NumPy库中,ndim 和 shape 是用来描述多维数组(ndarray)的重要属性:

ndim是一个属性,代表数组的维度数量,也就是数组“有多少层”。它返回一个整数,表示数组有多少个轴(axis)。

返回值为3代表这是一个3维数组

shape同样是一个属性,但它返回的是一个表示数组各维度大小的元组。这个元组的每一个元素对应数组在相应轴上的尺寸。

这里的shape表示第一维度有2个元素(外层的两个方括号),第二维度也有2个元素(每层方括号内的两个子列表),第三维度有3个元素(每个子列表内的3个数)。比较抽象,上升到4维数组我容易猪脑过载(

  • arr.ndim 告诉你数组的“等级”,即它有多深或多层。
  • arr.shape 明确给出了每一层有多少元素,从而描述了整个数组在各个维度上的具体结构。

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

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

相关文章

【Unity】程序创建Mesh(二)MeshRenderer、光照、Probes探针、UV信息、法线信息

文章目录 接上文MeshRenderer(网格渲染器)Materials(材质)Material和Mesh对应Lighting光照Lightmapping材质中的光照 光源类型阴影全局光照Probes(探针)Ray Tracing(光线追踪)Additi…

【C++】map和set深度讲解

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟练掌握map和set容器。 > 毒鸡汤:…

升入理解计算机系统学习笔记

磁盘存储 磁盘是广为应用的保存大量数据的存储设备,存储数据的数量级可以达到几百到几千千兆字节,而基于RAM的存储器只能有几百或几千兆字节。不过,从磁盘上读信息的时间为毫秒级,比从DRAM读慢了10万倍,比从SRAM读慢了…

NodeJs利用腾讯云实现手机发送验证码

本文介绍如何在nodejs实现短信发送,以腾讯云的短信验证为例。 腾讯云中准备工作 首先需要腾讯云的个人或者企业认证的账号,个人会赠送一百条,企业赠送一千条,可以用于测试,地址:腾讯云短信服务。然后需要…

《Ubuntu20.04环境下的ROS进阶学习5》

一、Hector_Mapping构建二维地图 在前面我们已经介绍了如何使用激光雷达来扫描地图,如何用激光雷达来建造地图,本节我们将两者结合起来,通过Hector_Mapping功能包实现SLAM。 二、在仿真环境中进行2D SLAM 1、下载Hector_Mapping sudo apt i…

【论文阅读笔记】Attention Is All You Need

1.论文介绍 Attention Is All You Need 2017年 NIPS transformer 开山之作 回顾一下经典,学不明白了 Paper Code 2. 摘要 显性序列转导模型基于包括编码器和解码器的复杂递归或卷积神经网络。性能最好的模型还通过注意力机制连接编码器和解码器。我们提出了一个新…

【Numpy】练习题100道(26-50题)

#学习笔记# 在学习神经网络的过程中发现对numpy的操作不是非常熟悉,遂找到了Numpy 100题。 Git-hub链接 1.题目列表 26. 下面的脚本输出什么?(★☆☆) print(sum(range(5),-1)) from numpy import * print(sum(range(5),-1)) 27. 考虑一个整数向量…

怎样提升小程序日活?签到抽奖可行吗?

一、 日活运营策略 小程序应该是即用即走的,每个小程序都在用户中有自己的独特定位,可能是生活日常必备(美食、团购、商城),也可能是工作办公必备(文档、打卡、工具)。 如果你想要让自己的小程…

云计算与APP开发,如何利用云端服务提升应用性能?

随着移动应用程序(APP)的普及,如何提升应用性能成为了开发者们关注的重点之一。而云计算技术的发展为APP开发者提供了全新的解决方案。本文将探讨云计算与APP开发的结合,以及我们公司提出的解决方案,帮助开发者利用云端…

KMP 算法介绍

1. KMP 算法介绍 KMP 算法:全称叫做 「Knuth Morris Pratt 算法」,是由它的三位发明者 Donald Knuth、James H. Morris、 Vaughan Pratt 的名字来命名的。KMP 算法是他们三人在 1977 年联合发表的。 KMP 算法思想:对于给定文本串 T 与模式串 …

使用 ZipArchiveInputStream 读取压缩包内文件总数

读取压缩包内文件总数 简介 ZipArchiveInputStream 是 Apache Commons Compress 库中的一个类,用于读取 ZIP 格式的压缩文件。在处理 ZIP 文件时,编码格式是一个重要的问题,因为它决定了如何解释文件中的字符数据。通常情况下,Z…

代码随想录刷题笔记 Day 52 | 打家劫舍 No.198 | 打家劫舍 II No.213 | 打家劫舍III No.337

文章目录 Day 5201. 打家劫舍&#xff08;No. 198&#xff09;<1> 题目<2> 笔记<3> 代码 02. 打家劫舍 II&#xff08;No. 213&#xff09;<1> 题目<2> 笔记<3> 代码 03.打家劫舍III&#xff08;No. 337&#xff09;<1> 题目<2&g…

工智能的迷惑是技术发展的产物

简述&#xff1a; 随着ChatGPT在全球科技舞台上掀起一股热潮&#xff0c;人工智能再次成为了人们关注的焦点。各大公司纷纷紧跟潮流&#xff0c;推出了自己的AI大模型&#xff0c;如&#xff1a;文心一言、通义千问、讯飞星火、混元助手等等&#xff0c;意图在人工智能领域占据…

Vue多文件学习项目综合案例——购物车,黑马vue教程

一、项目截图 二、主要知识点 vuex的使用json-server的使用json-server --watch index.json三、需要注意的点 json-server 安装成功&#xff0c;查看版本直接报错。安装默认版本埋下的一个坑&#xff0c;和node版本不匹配作者直接安装vuex&#xff0c;默认安装也是版本不匹配…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Panel)

可滑动面板&#xff0c;提供一种轻量的内容展示窗口&#xff0c;方便在不同尺寸中切换。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 说明&#xff1a; 子组件类型&a…

QMI8658芯片I2C驱动开发指南

这个芯片纯国产挺好用的&#xff0c;电路很好设计&#xff0c;我这垃圾焊功&#xff0c;纯手焊&#xff0c;&#xff0c;居然能用。 第一部分 硬件连接 画的很简陋&#xff0c;看看就可以了&#xff0c;这里I2C总线需要接10K上拉没有画出来&#xff0c;这个需要注意一下。 …

树形结构 一篇文章梳理

树形结构是一种非常重要的非线性数据结构&#xff0c;它模拟了具有层次关系的数据模型。在树形结构中&#xff0c; 目录 一、组成元素&#xff1a; 二、树的属性&#xff1a; 深度或高度 度 路径 路径长度 三、树的类型 1 二叉树 2 多叉树 3 完全二叉树 4 满二叉树…

【计算机网络_传输层】UDP和TCP协议

文章目录 1. 重新理解端口号端口号划分netstat指令pidof 2. UDP协议2.1 UDP协议端格式2.2 UDP的特点2.3 UDP的注意事项2.4 基于UDP的应用层协议 3. TCP协议&#xff08;传输控制协议&#xff09;3.1 TCP协议的格式和报头字段3.2 如何解包和分用3.3 理解TCP协议报头3.4 TCP协议的…

day-20 二叉树的层序遍历

思路&#xff1a;利用队列进行广度优先遍历即可 注意点&#xff1a;ArrayList执行remove之后&#xff0c;索引i会立即重排&#xff0c;注意可能越界 code: /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeN…

Xcode调试Qt 源码

在Mac下使用Xcode 开发Qt程序&#xff0c;由于程序断点或者崩溃后&#xff0c;Qt库的堆栈并不能够正确定位到源码的cpp文件&#xff0c;而是显示的是汇编代码&#xff0c;导致不直观的显示。 加载的其他三方库都是同理。 所以找了攻略和研究后&#xff0c;写的这篇文章。 一&a…