Python (十二) NumPy操作


程序员的公众号:源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


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

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

相关文章

程序员的20大Git面试问题及答案

文章目录 1.什么是Git&#xff1f;2.Git 工作流程3.在 Git 中提交的命令是什么&#xff1f;4.什么是 Git 中的“裸存储库”&#xff1f;5.Git 是用什么语言编写的&#xff1f;6.在Git中&#xff0c;你如何还原已经 push 并公开的提交&#xff1f;7.git pull 和 git fetch 有什么…

计算机网络(3):数据链路层

数据链路层属于计算机网络的低层。 数据链路层使用的信道主要有以下两种类型&#xff1a; (1)点对点信道。这种信道使用一对一的点对点通信方式。 (2)广播信道。这种信道使用一对多的广播通信方式。广播信道上连接的主机很多&#xff0c;因此必须使用专用的共享信道协议来协调这…

制作PPT找了一个校徽是方形的,如何裁剪为圆形的。

问题描述&#xff1a;制作PPT找了一个校徽是方形的&#xff0c;如何裁剪为圆形的。 问题解决&#xff1a;使用一个在线圆形裁剪软件即可。 网址为&#xff1a; https://crop-circle.imageonline.co/cn/#google_vignette

css实现边框彩虹跑马灯效果

效果展示 代码实战 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-…

VWAP 订单的最佳执行方法:随机控制法

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学&#xff0c;点击下方链接报名&#xff1a; 量化投资速成营&#xff08;入门课程&#xff09; Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

软件设计模式:UML类图

文章目录 前言一、&#x1f4d6;设计模式概述1.软件设计模式的产生背景2.软件设计模式3.设计模式分类 二、&#x1f4e3;UML图1.类图概述2.类的表示法3.类与类之间的关系关联关系&#xff08;1&#xff09;单向关联&#xff08;2&#xff09;双向关联&#xff08;3&#xff09;…

【物联网无线通信技术】WiFi从理论到实践(ESP8266)

文章从理论基础到具体实现完整的介绍了最常见的物联网无线通信技术&#xff1a;WiFi。 文章首先介绍了WiFi这种无线通信技术的一些基本概念&#xff0c;并针对其使用的802.11协议的基本概念与其定义的无线通信连接建立过程进行了简单的介绍&#xff0c;然后对WiFi开发常常涉及的…

代码提交规范-ESLint+Prettier+husky+Commitlint

代码提交规范-ESLintPrettierhuskyCommitlint 配置eslint &#xff08;3步&#xff09;配置prettier(4步)1.安装配置prettier2.设置忽略文件 .prettierignore3.处理eslint冲突4. 配置vscode 的settings.json husky安装并配置lint-staged&#xff08;3步&#xff09;安装配置com…

网线的制作集线器交换机路由器的配置--含思维导图

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 一、网线的制作 1、网线的材料有哪些&#xff1f; 网线 网线是一种用于传输数据信号的电缆&#xff0c;广泛应…

【STM32工具篇】使用CLion开发STM32

本文主要记录使用CLion开发STM32&#xff0c;并调试相关功能 使用的CLion版本&#xff1a;2023.3.1 CLion嵌入式配置教程&#xff1a;STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载&#xff1a;Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…

Java 栈和队列的交互实现

文章目录 队列和栈的区别一.用队列模拟实现栈1.1入栈1.2出栈1.3返回栈顶元素1.4判断栈是否为空 二.用栈模拟实现队列2.1 入队2.2出队2.3peek2.4判断队列是否为空 三.完整代码3.1 队列模拟实现栈3.2栈模拟实现队列 队列和栈的区别 栈和队列都是常用的数据结构&#xff0c;它们的…

Zookeeper-快速开始

Zookeeper介绍 简介&#xff1a;ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来解决分布式集群中应用系统的一致性问题。 设计目标&#xff1a;将那些复杂且容易出错的分布式一致性服务封装起来&#xff0c;构成一个高效…

Java中四种引用类型(强、软、弱、虚)

目录 引言 强引用&#xff08;Strong References&#xff09; 软引用&#xff08;Soft References&#xff09; 弱引用&#xff08;Weak References&#xff09; 虚引用&#xff08;Phantom References&#xff09; 引用类型的应用场景 总结 引言 Java中的引用类型是管理…

【漏洞复现】CVE-2023-6895 IP网络对讲广播系统远程命令执行

漏洞描述 杭州海康威视数字技术有限公司IP网络对讲广播系统。 海康威视对讲广播系统3.0.3_20201113_RELEASE(HIK)存在漏洞。它已被宣布为关键。该漏洞影响文件/php/ping.php 的未知代码。使用输入 netstat -ano 操作参数 jsondata[ip] 会导致 os 命令注入。 开发语言:PHP 开…

计算机组件操作系统BIOS的相关知识思维导图

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、运维实施工程师需要具备的知识 1、运维工程师、实施工程师是啥&#xff1f; 2、运维工程师、实施工…

[DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案

[网络故障] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案 问题描述 最近&#xff0c;我在使用CSDN插件浏览 MOOC 网站时&#xff0c;遇到了一些网络故障。具体表现为&#xff1a; MOOC 中国大学慕课网&#xff1a;www.icourse163.org点击CSDN插件首页的 MOOC&#xff08…

gitcode邀请协作人员

项目首页 点击项目设置 点击项目成员设置--生成邀请链接 设置权限、是否需要审核、成员有效时间、邀请链接有效时间&#xff08;不设置时间就是永久有效&#xff09; 点击创建链接 点击复制分享给别人加入即可

自动化测试工具-Selenium:WebDriver的API/方法使用全解

我们上一篇文章介绍了Selenium的三大组件&#xff0c;其中介绍了WebDriver是最重要的组件。在这里&#xff0c;我们将看到WebDriver常用的API/方法&#xff08;注&#xff1a;这里使用Python语言来进行演示&#xff09;。 1. WebDriver创建 打开VSCode&#xff0c;我们首先引…

windows下wsl(ubuntu)ldconfig报错

错误 sudo ldconfig /sbin/ldconfig.real: Cant link /usr/lib/wsl/lib/libnvoptix_loader.so.1 to libnvoptix.so.1 /sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link解决&#xff1a; 处理 sudo ldconfig 报错 libcuda.so.1 is not a symbolic …

IIS如何本地部署网站,作为局域网内的服务器

文章目录 IIS本地部署WebService1.使用IIS及WebService的原因:2.相关文件说明及网络条件说明&#xff1a;&#xff08;1&#xff09;文件说明&#xff1a;&#xff08;2&#xff09;网络条件说明&#xff1a; 3.IIS安装与配置&#xff1a;第一步&#xff1a;安装第二步&#xf…