Python (十二) NumPy操作

news2024/9/25 3:26:22

程序员的公众号:源1024获取更多资料,无加密无套路!

最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上


numpy官方文档

官方介绍

它是一个Python库,提供了多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种例程,包括数学,逻辑,形状操作,排序,选择,I/O,离散傅里叶变换,基本线性代数,基本统计操作,随机模拟等等。

NumPy包的核心是narray对象。这封装了同构数据类型的n维数组,许多操作在编译后的代码中执行,以提高性能。NumPy数组和标准Python序列之间有几个重要的区别:

NumPy数组在创建时具有固定的大小,不像Python列表(可以动态增长)。更改narray的大小将创建一个新数组并删除原来的数组。

NumPy数组中的元素都需要具有相同的数据类型,因此在内存中具有相同的大小。例外:可以有(Python,包括NumPy)对象的数组,从而允许不同大小元素的数组。

NumPy数组有助于对大量数据进行高级数学和其他类型的操作。通常,与使用Python的内置序列相比,这样的操作执行效率更高,代码也更少。

安装命令

pip install numpy

属性

import numpy as np

arr = np.array([1,2,3,4,5,6])

print(arr,type(arr))

# 元素类型
print(arr.dtype)
# 数组的维度,对于n行m列的数组,shape为(n,m)
print(arr.shape)
# 元素个数
print(arr.size)
# 维度
print(arr.ndim)
# 每个元素大小(字节)
print(arr.itemsize)

#输出
[1 2 3 4 5 6] <class 'numpy.ndarray'>
int32
(6,)
6
1
4

二维数组

arr2 = np.array([[1,2],[1.1,2.2],[1.11,2.22]])
# 元素类型
print(arr2.dtype)
# 数组的维度,对于n行m列的数组,shape为(n,m)
print(arr2.shape)
# 元素个数
print(arr2.size)
# 维度
print(arr2.ndim)
# 每个元素大小(字节)
print(arr2.itemsize)

#输出
loat64
(3, 2)
6
2
8

函数

array()

用array()函数来创建,括号内可以是列表、元祖、数组、生成器等

arr = np.array(5)
print(arr,type(arr))

arr = np.array([1,2,3])
print(arr,type(arr))

arr = np.array([[1,2,3],[1,2,3]])
print(arr,type(arr))

arr = np.array(range(5))
print(arr,type(arr))

#输出
5 <class 'numpy.ndarray'>
[1 2 3] <class 'numpy.ndarray'>
[[1 2 3]
 [1 2 3]] <class 'numpy.ndarray'>
[0 1 2 3 4] <class 'numpy.ndarray'>

arange()

arange()类似于range(),在给定区间内返回均匀间隔的数值

#返回整型
print(np.arange(6))
#返回浮点型
print(np.arange(6.0))
#返回6到10
print(np.arange(6,10))
#返回6到20,步长为3
print(np.arange(6,20,3))
#返回大数组,无法打印的跳过中心部分
print(np.arange(60000))

#输出
[0 1 2 3 4 5]
[0. 1. 2. 3. 4. 5.]
[6 7 8 9]
[ 6  9 12 15 18]
[    0     1     2 ... 59997 59998 59999]

linspace()

返回样本,指定区间内[开始,停止],计算的num个均匀间隔的样本

print(np.linspace(6,10,15))
#末尾的数值包不包含,其默认值为True
print(np.linspace(6,10,15,endpoint=False))

#创建数组且用0填充
print(np.zeros(5))
print(np.ones(5))
print(np.zeros_like(np.zeros(5)))

#输出
[ 6.          6.28571429  6.57142857  6.85714286  7.14285714  7.42857143
  7.71428571  8.          8.28571429  8.57142857  8.85714286  9.14285714
  9.42857143  9.71428571 10.        ]
[6.         6.26666667 6.53333333 6.8        7.06666667 7.33333333
 7.6        7.86666667 8.13333333 8.4        8.66666667 8.93333333
 9.2        9.46666667 9.73333333]
[0. 0. 0. 0. 0.]
[1. 1. 1. 1. 1.]
[0. 0. 0. 0. 0.]

copy()

arr = np.array([1,2,3,4,5])
arr1 = arr.copy()
print(arr1,type(arr1))

#输出
[1 2 3 4 5] <class 'numpy.ndarray'>

astype()

arr1=np.arange(10,dtype=float)
arr2=arr1.astype(np.int64)
print(arr1,arr1.dtype)
print(arr2,arr2.dtype)

#输出
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] float64
[0 1 2 3 4 5 6 7 8 9] int64

hstack()

横向堆叠

a=np.arange(4)
b=np.arange(4,7)
print(a)
print(b)
# 横向连接
print(np.hstack((a,b))) 

#输出
[[1]
 [2]
 [3]]
[['4']
 ['5']
 ['6']
 ['7']]

vstack()

竖向堆叠,必须保证列相同

a=np.array([[1],[2],[3]])
b=np.array([['4'],['5'],['6'],[7]])
print(a)
print(b)
# 竖向堆叠,必须保证列相同
print(np.vstack((a,b))) 

#输出
[['1']
 ['2']
 ['3']
 ['4']
 ['5']
 ['6']
 ['7']]

reshape()

用来改变数组的形状

arr =- np.zeros((3,4),dtype=int)
print(arr)
print(arr.reshape(4,3))

#输出
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
[[0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]]

运算

运算不需要循环遍历,真心强大

arr = np.arange(6).reshape(2,3)
print(arr)
# 加法
print(arr+10) 
# 乘法
print(arr*2) 
# 除法
print(1/(arr+1)) 
# 幂
print(arr**2) 

#输出
[[0 1 2]
 [3 4 5]]

[[10 11 12]
 [13 14 15]]


[[ 0  2  4]
 [ 6  8 10]]


[[1.         0.5        0.33333333]
 [0.25       0.2        0.16666667]]


[[ 0  1  4]
 [ 9 16 25]]
# 平均值
print(arr.mean())
# 最大值
print(arr.max())
# 最小值
print(arr.min()) 
# 标准差
print(arr.std())
# 方差
print(arr.var())
# 求axis为0,按列求和
print(arr.sum(),np.sum(arr,axis=0)) 
# axis为1,按行求和
print(arr.sum(),np.sum(arr,axis=1)) 
# 排序
print(np.sort(np.array([5,34,6,7,2,3]))) 

#输出
2.5
5
0
1.707825127659933
2.9166666666666665
15 [3 5 7]
15 [ 3 12]
[ 2  3  5  6  7 34]


系列文章索引

Python (一) 操作Mysql

Python (二) 读写excel文件

Python (三) 读写csv文件

Python (四)读写word

Python (五) 处理图像

Python (六) 绘图

Python(七)操作JSON


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

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

相关文章

IDEA中也能用Postman了,这款插件平替

Postman是大家最常用的API调试工具&#xff0c;那么有没有一种方法可以不用手动写入接口到Postman&#xff0c;即可进行接口调试操作&#xff1f;今天给大家推荐一款IDEA插件&#xff1a;Apipost Helper&#xff0c;写完代码就可以调试接口并一键生成接口文档&#xff01;而且还…

基于Tkinter制作简易的CAN bootloader上位机

文章目录 1.前言2.测试设备3.上位机3.1 参考资料3.2 上位机主要功能3.3 上位机发送流程 升级测试例程分享 1.前言 之前基于S32K144EVB和Tkinter编写了一个简易的串口bootloader上位机&#xff0c;链接如下&#xff1a; 基于Tkinter制作简易的串口bootloader上位机 (qq.com) …

Python之json模块和pickle模块详解

json模块和pickle模块的用法 在python中&#xff0c;可以使用pickle和json两个模块对数据进行序列化操作。 其中&#xff1a; json可以用于字符串或者字典等与python数据类型之间的序列化与反序列化操作。 pickle可以用于python特有类型与python数据类型之间的序列化与反序…

【软件工程】软件工程复习题库2023

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; SpringCloud MybatisPlus JVM 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 软件工程复习题库 一、选择题二、填空题三、判断题四…

E : DS查找—二叉树平衡因子

Description 二叉树用数组存储&#xff0c;将二叉树的结点数据依次自上而下,自左至右存储到数组中&#xff0c;一般二叉树与完全二叉树对比&#xff0c;比完全二叉树缺少的结点在数组中用0来表示。 计算二叉树每个结点的平衡因子&#xff0c;并按后序遍历的顺序输出结点的平衡…

SpringBoot基于gRPC进行RPC调用

SpringBoot基于gRPC进行RPC调用 一、gRPC1.1 什么是gRPC&#xff1f;1.2 如何编写proto1.3 数据类型及对应关系1.4 枚举1.5 数组1.6 map类型1.7 嵌套对象 二、SpringBoot gRPC2.1 工程目录2.2 jrpc-api2.2.1 引入gRPC依赖2.2.2 编写 .proto 文件2.2.3 使用插件机制生产proto相关…

延迟消息队列的几种实现方案,哪种更适合业务,要看具体情况分析

延迟消息队列的几种实现方案&#xff0c;延迟消息怎么实现&#xff0c;很多人可能一想到的是rabbitmq的死信队列来实现&#xff0c;但是一旦引入mq的话&#xff0c;就依赖这个中间件&#xff0c;另外维护成本&#xff0c;开发成本都很大&#xff0c;那有么有简单点的实现方式呢…

ubuntu推送本地仓库到coding

本教程提供在ubuntu系统下推送本地仓库到coding的指令&#xff0c;用于查阅 一、主要步骤有&#xff1a; 0.初始化仓库 git init 1.添加远程仓库 git remote add origin https://coding.git #修改自己仓库链接 &#xff08;命名仓库别名为origin&#xff09; 2.提交代码…

服务器解析漏洞有哪些?IIS\APACHE\NGINX解析漏洞利用

解析漏洞是指在Web服务器处理用户请求时&#xff0c;对输入数据&#xff08;如文件名、参数等&#xff09;进行解析时产生的漏洞。这种漏洞可能导致服务器对用户提供的数据进行错误解析&#xff0c;使攻击者能够执行未经授权的操作。解析漏洞通常涉及到对用户输入的信任不足&am…

那些令人惊叹的awk简略写法

​​​​​​​awk是一门美妙的语言&#xff0c;被称为unix命令行工具皇冠上的明珠。它有很多简略写法&#xff0c;用好了可以用极少的代码快速解决问题。 下面就列举一些令人惊叹的awk简略写法&#xff1a; awk {sub(/pattern/, "foobar")} 1 # 无论替换是否成功&…

一步步教你创建酒店预订小程序

如果你想为你的酒店或旅馆创建一个预订小程序&#xff0c;这篇文章将为你提供详细的步骤和指南。我们将按照以下顺序进行&#xff1a; 一、进入乔拓云网后台 首先&#xff0c;打开乔拓云网的官方网站&#xff0c;点击右上角的“登录”按钮&#xff0c;登录成功后&#xff0c;点…

基于vue与three.js,监听FPX(Stats类使用)

第一步&#xff0c;引入stats类并new出来 import Stats from three/examples/jsm/libs/stats.module.js; data(){return {stats : new Stats(),} } 第二步&#xff0c;添加dom mounted() {this.init3D();this.animate();window.addEventListener("keydown", this.…

【大数据面试】Flink面试题附答案

目录 ✅Flink介绍、特点、应用场景 ✅Flink与Spark Streaming的区别 ✅Flink有哪些部署模式 ✅Flink架构 ✅怎么设置并行度&#xff1f; ✅什么是算子链&#xff1f; ✅什么是任务槽&#xff08;Task Slots&#xff09;&#xff1f; ✅任务槽和并行度的关系 ✅Flink作…

easyexcel常见注解

easyexcel常见注解 一、依赖 <!--阿里巴巴EasyExcel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.10</version></dependency>二、常见注解 ExcelProperty 注解中…

使用Shell脚本监控主机

实验环境 某公司随着业务的不断发展&#xff0c;所使用的Linux服务器也越来越多&#xff0c;管理员希望编写一个简单的性 能监控脚本&#xff0c;放到各服务器中&#xff0c;当监控指标出现异常时发送告警邮件。 需求描述 > 编写名为sysmon.sh的 Shell 监控脚本。 > 监…

《数据结构、算法与应用C++语言描述》- 最小输者树模板的C++实现

输者树 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_31loserTree 输者树&#xff1a;每一个内部节点所记录的都是比赛的输者&#xff0c;晋级的节点记录在边上。本文中&#xff0c;赢者是分数较低的那个&#xff0c;输者是分数高…

安捷伦Agilent 34970A数据采集

易学易用 从34972A简化的配置到内置的图形Web界面&#xff0c;我们都投入了非常多的时间和精力&#xff0c;以帮助您节约宝贵的时间。一些非常简单的东西,例如模块上螺旋型端子连接器内置热电偶参考结、包括众多实例和提示的完整用户文档&#xff0c;以及使您能够在开机数分钟后…

【C++初阶】学习string类的模拟实现

目录 前言&#xff1a;一、创建文件和类二、实现string类2.1 私有成员和构造函数2.2 析构函数2.3 拷贝构造函数2.3.1 写法12.3.2 写法2 2.4 赋值重载函数2.4.1 写法12.4.2 写法2 2.5 迭代器遍历访问2.6 下标遍历访问2.7 reserve2.8 resize2.9 判空和清理2.10 尾插2.10.1 尾插字…

【mask转json】文件互转

mask图像转json文件 当只有mask图像时&#xff0c;可使用下面代码得到json文件 import cv2 import os import json import sysdef func(file:str) -> dict:png cv2.imread(file)gray cv2.cvtColor(png, cv2.COLOR_BGR2GRAY)_, binary cv2.threshold(gray,10,255,cv2.TH…

在线考试系统-软件与环境

一. 软件 1.Navicat、phpstudy、Idea、Vsode 参考 网盘链接 二.配置文件 1.Nodejs、JDK 参考 网盘链接 三.安装运行 1.下载网盘内的软件&#xff0c;并进行安装 2.安装对应的配置文件并进行配置 (1)VsCode 运行 a.新建terminal b.输入命令 npm run dev c.启动成功 (2)Php…