Python之三大基本库——Numpy(1)

最近呢学了一些关于python的一些功能,为了更方便快捷高效的实现项目,我们要熟知python的三个基本库:numpy、pandas、matplotlib的功能。由于我也是入门新手,所以先做一些基本的总结,后续有进阶的话会再来更新。

一、Numpy的作用

Numpy是一个Python科学计算库,提供了高性能的多维数组对象(ndarray)以及对这些数组进行操作的函数。它是许多其他数据科学和机器学习库的基础。总而言之,就是可以提高数据计算的库,而后面介绍的pandas、matplotlib也都是基于numpy库的数据基础上进行操作的

主要作用主要包括:

1、矩阵运算:numpy提供了各种矩阵运算,如矩阵乘法、转置和分解等,方便进行矩阵运算。同时,NumPy还支持使用多种矩阵运算,如矩阵乘法、矩阵加法、矩阵求逆等,满足不同场景的需求。

2、存储和处理大型矩阵:numpy是一个开源的数值计算扩展,可以用来存储和处理大型矩阵。它采用了NumPy中的嵌套列表结构,比Python本身的列表结构要高效得多。因此,NumPy可以用来存储和处理大型矩阵,并能够高效地进行矩阵运算。

3、数组操作:numpy的核心功能是ndarray对象,它是一个多维数组,可以进行快速的数值计算和数组操作。numpy提供了丰富的数组操作函数,如索引、切片、形状变换、数学运算、逻辑运算等。

4、数值计算:numpy提供了大量的数学函数,包括线性代数、傅里叶变换、随机数生成等。这些函数可以高效地处理大规模数据集,提供了快速、稳定的数值计算能力。

5、数据处理:numpy可以方便地处理和操作多维数组,可以对数据进行排序、去重、筛选、统计等操作。同时,numpy还提供了对文件的读写功能,可以方便地读取和保存数据。

6、科学计算:numpy广泛应用于科学计算领域,如物理学、生物学、化学、地理学等。它提供了许多科学计算的工具和函数,可以进行数据分析、建模、模拟等。

7、计算速度快:numpy库的计算速度非常快,甚至比python内置的简单运算还要快,这使得它成为很多科学计算和数据分析的首选工具。同时,numpy还有很多优点,比如易于扩展、灵活性高、支持多线程等。因此,numpy库在处理速度问题方面具有很大的潜力

二、numpy的核心对象array

与python中的一切皆对象不同,在numpy中是一切皆数据

numpy的核心数据结构,就叫做array就是数组,array对象可以是一维数组,也可以是多维数组。python的list也可以实现相同的功能,但是array比List的优点在于性能好、包含数组元数据信息、大量的便捷函数
numpy成为事实上的Scipy、Pandas、Scikit-Learn、Tensorflow、PaddlePaddle等框架的“通用底层语言”,numpy的array和python的list的一个区别,是numpy元素必须都是同一种数据类型,比如都是数字int类型,这也是numpy高性能的一个原因

import numpy as np# 创建一维数组
x1 = np.array([0,1,2,3,4,5,6,7,8,9])
# 创建二维或多维数组
x2 = np.array([[0,1,2,3,4],[5,6,7,8,9]])

三、numpy的array的本身属性

1、shape:返回一个元组,表示array的维度
2、ndim:一个数字,表示array的维度的数目
3、size:一个数字,表示array中所有数据元素的数目
4、dtype:返回array中元素的数据类型

x1.shape # 结果(10,)
x2.shape # 结果(2,5)x1.ndim # 结果 1
x2.ndim # 结果 2x1.size # 结果 10
x2.size # 结果 10x1.dtype # 结果 dtype(int32)
x2.dtype # 结果 dtype(int32)

四、创建array的方法

1、从Python的列表List和嵌套列表创建array
2、使用预定函数arange、ones/ones_like、zeros/zeros_like、empty/empty_like、full/full_like、eye等函数创建
3、生成随机数的np.random模块构建

# 方法1
list1 = [0,1,2,3,4,5]
x1 = np.array(list1)
list2 = [[0,1,2],[3,4,5]]
x2 = np.array(list2)# 方法2 使用关键字arange创建数字序列
# arange([start,] stop[, step,], dtype=None)
np.arange(10)
np.arange(2,10,2)# 方法3 使用ones创建全是1的数组
# np.ones(shape, dtype=None, order='C')shape : int or tuple of ints Shape of the new 
# array,e.g.,(2,3)or 2.
np.ones(10)
np.ones((2,3))
# 使用ones_like创建形状相同的数组
# ones_like(shape, dtype=float, order='C')
np.ones_like(x1)
np.ones_like(x2)# 方法4 使用zeros创建全是0的数组
# np.zeros(shape, dtype=None, order='C')
np.zeros(10)I
np.zeros((2,4))
# 使用zeros_like创建形状相同的数组
# np.zeros_like(a, dtype=None)
np.zeros_like(x1)
np.zeros_like(x2) # 方法5 使用empty创建全是随机数字的数组
# empty(shape, dtype=float, order='C') 注意:数据是未初始化的,里面的值可能是随机值不要用
np.empty(10)
np.empty((2,4))
# 使用empty_ike创建形状相同的数组empty_like(prototype, dtype=None)
np.empty_like(x)
np.empty_like(X)# 方法6 使用fuIl创建指定值的数组
# np.full(shape, fill value, dtype=None, order='C')
np.fu11(10,666)
np.full((2,4),333)
# 使用full_like创建形状相同的数组
# np.full_like(a,fill_value, dtype=None)
np.full_like(x,666)
np.full_like(X, 666)# 方法7 使用random模块生成随机数的数组,里面的参数代表数组维度数
# randn(d0, d1, ..., dn) 
np.random. randn ()
np.random. randn (3)
np.random.randn(3,2)
np.random.randn(3,2,4)

五、array本身支持的大量操作和函数

1、直接逐元素的加减乘除等算数操作
2、更好用的面向多维的数组索引
3、求sum/mean等聚合函数
4、线性代数函数,比如求解逆矩阵、求解方程组

# 这些操作如果用Python实现需要写很多for循环,用numpy数组很容易
A = np.arange(10)reshape(2,5)
A.shape
# 每个元素分别+1 或 *3
A+1
A*3
# 一些其它函数计算
np.sin(A)
np.exp(A)
# 用于等维度的两个数组之间的每个数据之间的运算
B = np.random.randn(2,5)
A+B
A-B

六、numpy对数组按照索引查询

1、基础索引

针对于一维数组来说,与python中的切片获取方式是一致的,但是对于多维数据就不同

# 分别用行坐标、列坐标,实现行列筛选
# x[0][0]相当于x[0,0]
x[-1,2]# 可以省略后续索引值,返回的数据是降低一个维度的数组
# 这里的2,其实是要筛选第2行
x[2]
# 筛选-1对应的行
x[-1]
# 筛选多行
x[:-1]
# 筛选多行,然后筛选多列
x[:2, 2:4]
# 筛选所有行,然后筛选多列
x[:,2]

注意:切片的修改会修改原来的数组,Numpy不会修改原来的元素

原因:Numpy经常要处理大数组,避免每次都复制,节省时间和空间 

2、神奇索引(花式索引)

用整数数组进行的索引,叫做神奇索引,就是在中括号中传入一个list

# 先后构建一个两行两列的数组,然后用indexs列表传入就可以全部取出来
indexs = np.array([0,2],[1,3])
x[indexs]实例:获取数组中最大的前N个数字
# 一维数组:随机生成1到100之间的,10个数字
arr = np.random.randint(l,100,10)
# arr.argsort()会返回排序后的索引index
# 取最大值对应的3个下标
arr.argsort()[-3:]
arr[arr,argsort()[-3:]]# 多维数组 筛选多列,行不能省略
X = np.arange(20).reshape(4,5)
X[:,[0,2, 3]]
array([[ 0,NN3]5[10,12,13],[15,17,18]])
# 同时指定行列-列表
# 返回的是[(0,1),(2,3),3,4)]位置的数字
X[[0,2,3],[1,3,4]]

3、布尔索引

注意:布尔索引选择的数据是数组的拷贝

X = np.arange(20).reshape(4,5)
# X>5的boolean数组,既有行,又有列
X>5
# 如下返回的是(行,列)一维结果
X[X>5]# 举例:怎样把第3列大于5的行筛选出来
X[:,3]>5
# 下面是筛选出有多少行>5的数据
X[X[:,3]>5] = 666# 组合查询
# 注意,每个条件都得加小括号
condition = (x%2==0)|(x>7)
X[condition]

 

内容太长了,我们分两张进行讲解吧,想要找下一篇的小伙伴们,看博主链接或主页寻找。

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

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

相关文章

POI导入带有合并单元格的excel,demo实例,直接可以运行

直接可以运行 import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.s…

网络与协议安全复习 - 系统安全部分

文章目录 恶意软件什么是恶意软件传播机制和载荷传播载荷 DDoS 攻击和防范 防火墙什么是防火墙防火墙类型防火墙载体 入侵检测入侵者入侵检测蜜罐技术 口令管理基于Bloom过滤器的口令检查技术 恶意软件 什么是恶意软件 恶意软件定义为:隐蔽植入另一段程序的程序&a…

使用 XML 配置定义和管理 Spring Bean

Spring 框架提供了多种方式来定义和管理 Bean,XML 配置是其中一种传统且强大的方式。尽管现在更多的项目使用基于注解的配置,但了解 XML 配置在理解 Spring 的工作原理和处理遗留系统时仍然非常重要。本文将详细介绍如何使用 XML 配置来定义和管理 Sprin…

数据赋能(125)——体系:数据格式化——实施过程、应用特点

实施过程 数据格式化的实施过程通常涉及以下几个关键步骤: 需求分析: 明确数据格式化的目标和需求,例如是为了数据展示、存储、传输还是其他目的。确定需要格式化的数据类型和格式,例如日期、数字、文本等。数据准备&#xff1a…

Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单

文章目录 一、SSO介绍1、使用SSO的好处 二、中间件介绍1、Express安装导入使用 2、cors安装导入配置 3、express-session安装导入配置使用 4、jsonwebtoken安装导入使用 5、jwt和session对比 三、SSO实现方案1、安装依赖2、结构3、实现原理 三、示例代码1、nodejs端 server/ind…

React是怎么进行事件处理的

什么是事件? 事件是指一些可以通过脚本响应的页面动作。当用户按下鼠标或者提交一个表单等等时候,事件都会出现。事件处理是一段JavaScript代码,总是与页面中的特定部分以及一定的事件相关联。当与页面特定部分相关联的事件发生时&#xff0c…

MDK-ARM 编译后 MAP 文件分析

本文配合 STM32 堆栈空间分布 食用更佳! 一图胜千言。。。

pytorch十大核心操作

PyTorch的十大核心操作涵盖了张量创建、数据转换、操作变换等多个方面。以下是结合参考文章信息整理出的PyTorch十大核心操作的概述: 张量创建: 从Python列表或NumPy数组创建张量。使用特定值创建张量,如全零、全一、指定范围、均匀分布、正…

开发环境安装---Visual Studio Code

开发环境安装---Visual Studio Code 1.官网下载Visual Studio Code2.安装步骤3.安装插件 1.官网下载Visual Studio Code VScode: https://code.visualstudio.com/ Visual Studio Code 简称 VSCode ,2015 年由微软公司发布。可用于 Windows,macOS 和 Li…

1panel

0)VMware安装CentOS 0.1)确保有网络 0.2)安装依赖环境 yum -y install yum-utils device-mapper-persistent-datalvm21)切换阿里镜像源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/doc…

HTML(17)——圆角和盒子阴影

盒子模型——圆角 作用:设置元素的外边框为圆角 属性名:border-radius 属性值:数字px/百分比 也可以每个角设置不同的效果,从左上角顺时针开始赋值,没有取值的角与对角取值相同。 正圆 给正方形盒子设置圆角属性…

数据库实战(二)(引言+关系代数)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀数据库 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 常见概念 一、什么是数据库&#xf…

【鸿蒙】HUAWEI DevEco Studio安装

HUAWEI DevEco Studio介绍 面向HarmonyOS应用及元服务开发者提供的集成开发环境(IDE), 助力高效开发。 DevEco Studio当前最新版本是: 3.1。 DevEco Studio计划里程碑 版本类型说明 下载 下载网址:DevEco Studio安装包官⽅下载 双击运行…

git 提交代码的常用命令

一. 简介 本文简单学习一下,如何使用 git命令,从 gerrit下拉代码,创建分支,或者将代码(暂时)存入栈区,或者向 gerrit提交代码等等一些操作。 二. git 创建、切换分支,提交代码的常…

C++ | Leetcode C++题解之第169题多数元素

题目&#xff1a; 题解&#xff1a; class Solution { public:int majorityElement(vector<int>& nums) {int candidate -1;int count 0;for (int num : nums) {if (num candidate)count;else if (--count < 0) {candidate num;count 1;}}return candidate;…

STM32通过Flymcu串口下载程序

文章目录 1. Flymcu 2. 操作流程 2.1 设备准备 2.2 硬件连接 2.3 设置BOOT引脚 2.4 配置 2.5 下载程序 1. Flymcu Flymcu软件可以通过串口给STM32下载程序&#xff0c;如果没有STLINK的时候&#xff0c;就可以使用这个来烧录程序。软件不用安装&#xff0c;直接打开就行…

Windows11+CUDA12.0+RTX4090如何配置安装Tensorflow2-GPU环境?

1 引言 电脑配置 Windows 11 cuda 12.0 RTX4090 由于tensorflow2官网已经不支持cuda11以上的版本了&#xff0c;配置cuda和tensorflow可以通过以下步骤配置实现。 2 步骤 &#xff08;1&#xff09;创建conda环境并安装cuda和cudnn&#xff0c;以及安装tensorflow2.10 con…

【代码随想录算法训练Day44】LeetCode 322.零钱兑换、LeetCode 279.完全平方数、LeetCode139.单词拆分

Day44 动态规划第六天 LeetCode 322.零钱兑换 dp数组的含义&#xff1a;装满容量为j的背包需要的最少物品数为dp[j] 递推公式&#xff1a;dp[j]min(dp[j-coins[i]]1,dp[j]) 初始化&#xff1a;dp[0]0,dp[j]INT_MAX 遍历顺序&#xff1a;个数问题与遍历顺序无关&#xff0c;都…

[Python学习篇] Python字典

字典是一种可变的、无序的键值对&#xff08;key-value&#xff09;集合。字典在许多编程&#xff08;Java中的HashMap&#xff09;任务中非常有用&#xff0c;因为它们允许快速查找、添加和删除元素。字典使用花括号 {} 表示。字典是可变类型。 语法&#xff1a; 变量 {key1…

等保2.0时代下的安全体系的构建

一、等保2.0的背景与要求 等保2.0&#xff0c;即网络安全等级保护2.0&#xff0c;是我国网络安全领域的一项基本国策和基本制度。它的核心在于构建一套适应不同网络环境和保护对象的安全保护标准和技术要求&#xff0c;以应对日益复杂多变的网络安全威胁。 等保2.0的实施&…