numpy的基本使用

news2024/11/26 16:39:46

一、NumPy 的主要特性和功能:

  1. 多维数组对象(ndarray)

    • NumPy 的核心是 ndarray 对象,它是一个多维数组,可以存储相同类型的元素。ndarray 对象具有固定大小,支持矢量化运算和广播功能,这使得在 NumPy 中进行数组运算非常高效。

  2. 数组创建

    • 可以通过多种方式创建 ndarray 对象,包括从 Python 列表或元组转换、使用 NumPy 提供的函数生成特定形状和数据类型的数组、从文件读取数据等。

  3. 数组操作

    • 索引与切片:与 Python 列表类似,可以使用索引和切片来访问和修改数组的元素。

    • 数组形状操作:可以改变数组的形状,如重塑、扁平化、转置等。

    • 数组组合与分割:可以将多个数组组合成一个新数组,或者将一个数组分割成多个子数组。

    • 数组的计算:NumPy 提供了丰富的数学和统计函数,如加减乘除、三角函数、指数函数、对数函数、统计函数等,可以对数组进行各种数学和统计计算。

  4. 数组广播

    • 当进行不同形状数组之间的运算时,NumPy 使用广播规则来进行计算,这使得在不同维度的数组之间进行运算变得更加方便和高效。

  5. 线性代数运算

    • NumPy 提供了丰富的线性代数运算功能,如矩阵乘法、矩阵分解、求解线性方程组等,可以方便地进行各种线性代数计算。

  6. 随机数生成

    • NumPy 提供了生成各种概率分布的随机数的函数,如均匀分布、正态分布、泊松分布等,这对于模拟和概率计算非常有用。

  7. 文件输入输出

    • NumPy 支持从文本文件、二进制文件以及 NumPy 自定义的文件格式中读取数据,也可以将数据保存到这些格式中。

  8. 性能优化

    • NumPy 中的许多操作都是使用 C 语言实现的,因此具有很高的性能。此外,NumPy 还提供了一些优化工具,如向量化操作、内存优化等,可以进一步提高计算效率。

二、Numpy 对数组进行操作

1.导入numpy数据库
import numpy as np
2.创建数组
print(np.array([1, 2, 3, 4, 5]))
3.创建全零数组或全一数组
# 0
print(np.zeros((3, 2)))
# 1
print(np.ones((2, 4)))
​
"""
[[0. 0.]
 [0. 0.]
 [0. 0.]]
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]]
"""
4.获取数组的尺寸
a = np.zeros((3, 2))
print(a.shape)  # (行,列)
# (3, 2)
5.创建递增或递减的数组,类似range
print(np.arange(3, 7)) # [3 4 5 6]
6.介于两个数之间,等间距的数
print(np.linspace(0, 1, 5))
# [0.   0.25 0.5  0.75 1.  ]
7.生成随机数组
print(np.random.rand(2, 4))
# [[0.4270443  0.38154075 0.46158911 0.11078224]
# [0.67902116 0.58708575 0.85713226 0.43969598]]
8.数组的数据类型
a = np.zeros((3, 2))
print(a.dtype)
# float64

9.指定数组的数据类型
a = np.zeros((3, 2), dtype=np.int32)
print(a.dtype)
# int32
10.转换数据类型
a = np.zeros((3, 2))
b = a.astype(int)
print(b.dtype)
# int32

三、Numpy 的基本运算

1.四则运算,将数组同位置的元素进行 加减乘除
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
​
print(a + b) # [5 7 9]
print(a / b) # [0.25 0.4  0.5 ]
2.将两个向量进行点乘运算
print(np.dot(a, b)) # 32
3.矩阵乘法运算
a = np.array([[1, 2], [3, 4]])
b = np.array([[4, 5], [7, 8]])
print(a @ b)
print(np.matmul(a, b))
"""
[[18 21]
 [40 47]]
[[18 21]
 [40 47]]
"""
4.求平方根
a = np.array([1, 2, 3])
print(np.sqrt(a)) # [1.         1.41421356 1.73205081]
5.三角函数运算
a = np.array([1, 2, 3])
print(np.sin(a)) # [0.84147098 0.90929743 0.14112001]
print(np.cos(a)) # [ 0.54030231 -0.41614684 -0.9899925 ]
6.对数与指数运算
a = np.array([1, 2, 3])
print(np.log(a)) # [0.         0.69314718 1.09861229]
print(np.power(a, 2)) # [1 4 9]
7.广播
a = np.array([1, 2, 3])
print(a * 5) # [ 5 10 15]
8.不同尺寸的数组之间的运算
a = np.array([[1], [10], [20]])
b = np.array([4, 5, 6])
print(a + b)
"""
[[ 5  6  7]
 [14 15 16]
 [24 25 26]]
"""

9.获取最大最小值的数与索引
a = np.array([1, 2, 3, 4, 5])
print(a.min()) # 1
print(a.max()) # 5
​
print(a.argmin()) # 0
print(a.argmax()) # 4
10.求和,平均值,中位数,方差,标准方差
# 一维数组
a = np.array([1, 2, 3, 4, 5])
print(a.sum()) # 15
print(a.mean()) # 3.0
print(np.median(a)) # 3.0
print(a.var()) # 2.0
print(a.std()) # 1.4142135623730951
​
# 多维数组
a = np.array([[1, 2, 3, 4, 5],
              [5, 6, 7, 8, 9]])
print(a.sum(axis=0))  # 每一列中对应的数相加
# [ 6  8 10 12 14]
print(a.sum(axis=1))  # 每一行中对应的数相加
# [15 35]
11.获取数组中的元素
a = np.array([[1, 2, 3, 4, 5],
              [5, 6, 7, 8, 9]])
​
print(a[0, 1])  # 第一行第二列 # 2
# 切片
print(a[0, 0:2]) # [1 2]
print(a[0, :]) # [1 2 3 4 5]
# 步长
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
print(a[0:9:2]) # [1 3 5 7 9]
print(a[0:9:3]) # [1 4 7]
print(a[4:1:-2]) # 反转
# [5 3]
12.筛选指定的元素
a = np.arange(10)
print(a) # [0 1 2 3 4 5 6 7 8 9]
print(a[a < 3]) # [0 1 2]
print(a[(a > 3) & (a % 2 == 0)]) # [4 6 8]

四、numpy 的使用

1.导入库
from PIL import Image
import numpy as np
2.导入图片
im = Image.open('头像.jpg')
im.show()

3.将图片转化为数组
im = np.array(im)
print(im.shape) # (512, 512, 3)
4.访问像素点颜色
print(im[100, 100]) # [211 223 223]
5.提取红色分量
im_r = im[:, :, 0]
Image.fromarray(im_r).show()

6.将图片按比例混合
im1 = np.array(Image.open('4.jpg'))
im2 = np.array(Image.open('5.jpg'))
im_blend = im1 * 0.4 + im2 * 0.6
im_blend = im_blend.astype(np.uint8)
Image.fromarray(im_blend).show()
7.反转图片
im_flipped = im[::-1,:,:]
Image.fromarray(im_flipped).show()

8.裁剪图片
im_cropped = im1[40:540,400:900,:]
Image.fromarray(im_cropped).show()

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

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

相关文章

Vue3的ref创建一个全局变量,非常好用!

1. 前言 Vue3的ref对象我们都知道其用法,通过ref可以创建一个响应式对象使用,同时可以用compute,watch等Vue3的API对其进行操作 不同于Vue2的是,Vue3使用的是组合式API,这也就意味着,我可以在外部单独创建一个ref对象,然后保存,通过导出的方式,给其他的页面使用 理论存在,开始…

Python 机器学习 基础 之 算法链与管道 【通用的管道接口/网格搜索预处理步骤与模型参数/网格搜索选择使用哪个模型】的简单说明

Python 机器学习 基础 之 算法链与管道 【通用的管道接口/网格搜索预处理步骤与模型参数/网格搜索选择使用哪个模型】的简单说明 目录 Python 机器学习 基础 之 算法链与管道 【通用的管道接口/网格搜索预处理步骤与模型参数/网格搜索选择使用哪个模型】的简单说明 一、简单介…

【网络安全的神秘世界】Kali安装中文输入法

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 今天就手把手教你如何在kali中安装和配置输入法 首先&#xff0c;打开终端&#xff0c;输入下面这行代码&#xff1a; # sudo apt install ibus ibus-pi…

Python第二语言(四、Python数据容器)

目录 一、 数据容器&#xff08;list、tuple、str、map、dict&#xff09; 1. 数据容器概念 2. 列表list&#xff08; [] &#xff09; 2.1 定义方式 2.2 嵌套列表 2.3 list通过获取下标索引获取值 2.4 下标使用概念 2.5 list列表的使用&#xff08;列表的方法&#xff…

【研发日记】Matlab/Simulink软件优化(二)——通信负载柔性均衡算法

文章目录 前言 背景介绍 初始代码 优化代码 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink软件优化(一)——动态内存负荷压缩》 背景介绍 在一个嵌入式软件开发项目中&#xff0c;需要设计一个ECU节点的CAN网路数据发送&#xff0c;需求是在500k的通信波特率上&a…

特征工程技巧—Bert

前段时间在参加比赛&#xff0c;发现有一些比赛上公开的代码&#xff0c;其中的数据预处理步骤值得我们参考。 平常我们见到的都是数据预处理&#xff0c;现在我们来讲一下特征工程跟数据预处理的区别。 数据预处理是指对原始数据进行清洗、转换、缩放等操作&#xff0c;以便为…

制造执行MES系统在光伏行业的应用

全球对可再生能源的需求不断增长&#xff0c;光伏能源作为一种清洁、可持续的能源形式&#xff0c;已经在广泛应用中受到了广泛关注。为满足工业领域的光伏能源需求&#xff0c;光伏制造执行系统(MES)作为一种集成化的技术解决方案&#xff0c;提供了更高效、更可靠的解决方案。…

海外仓系统推荐:中小型海外仓和家庭海外仓如何低投入高营收

随着海外仓行业整体竞争的加剧&#xff0c;海外仓的管理和经营成本可以说也是水涨船高。这对一些集团性质的大型海外仓影响不大&#xff0c;因为他们可以通过规模效应来摊薄成本。 但是对中小型海外仓和一些家庭海外仓来说&#xff0c;影响将是巨大的。一方面&#xff0c;海外…

GLM-4开源版本终于发布!!性能超越Llama3,多模态媲美GPT-4V,MaaS平台全面升级

今天上午&#xff0c;在 AI 开放日上&#xff0c;备受关注的大模型公司智谱 AI 公布了一系列行业落地数据&#xff1a; 根据最新统计&#xff0c;智谱 AI 大模型开放平台目前已拥有 30 万注册用户&#xff0c;日均调用量达到 4000 亿 Tokens。GPT-4o深夜发布&#xff01;Plus免…

【重学C语言】十八、SDL2 图形编程介绍和环境配置

【重学C语言】十八、SDL2 图形编程介绍和环境配置 **SDL2介绍**SDL 2用途SDL 在哪些平台上运行&#xff1f;下载和安装 SDL2安装 SDL2 clion 配置 SDL2 SDL2介绍 SDL2&#xff08;Simple DirectMedia Layer 2&#xff09;是一个开源的跨平台多媒体开发库&#xff0c;主要用于游…

Cortex系列详解

Cortex系列属于ARMv7架构(ARM公司在经典处理器ARM11以后的产品改用Cortex命名) 一、Cortex-A系列 “A”系列面向尖端的基于虚拟内存的操作系统和用户应用。 A 系列处理器适用于具有高计算要求、运行丰富操作系统以及提供交互媒体和图形体验的应用领域。 具体案例如:智能手…

2024百度之星 跑步

原题链接&#xff1a;码题集OJ-跑步 题目大意&#xff1a;一个n个人在绕圈跑&#xff0c;第i个人跑一圈的时间是i分钟&#xff0c;每二个人位置相同就会打一次招呼&#xff0c;如果同时来到终点&#xff0c;他们就会停下来&#xff0c;请问会打多少次招呼&#xff1f; 思路&a…

文件加密软件排行榜前五名|好用的五款文件加密软件分享

你的公司是否存在这些问题&#xff1a; 数据泄露事件常有发生&#xff0c;数据安全的重要性日益凸显&#xff0c;而文件加密软件则是保护数据安全的重要工具。 市场上存在众多文件加密软件&#xff0c;每款都有其独特的特点和优势。 本文将为您分享五款好用的文件加密软件&…

java通过ftp上传文件到服务器

依赖 <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version></dependency> 代码 package com.cyz; impor…

Docker高级篇之Dockerfile解析

文章目录 1. DockerFile简介2. DockerFile的构建过程3. DockerFile的常用保留字4. 使用案例5. 虚悬镜像 1. DockerFile简介 DockerFile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像的指令和参数构成的脚本。 2. DockerFile的构建过程 DockerFile内容的基…

2.3 OpenCV随手简记(四)

阈值处理是很多高级算法底层处理的预方法之一。 自己求图像平均阈值&#xff1a; # -*- codingGBK -*- import cv2 as cv import numpy as np #求出图像均值作为阈值来二值化 def custom_image(image): gray cv.cvtColor(image, cv.COLOR_BGR2GRAY) cv.imshow("原来&qu…

精选网络安全书单:打造数字世界的钢铁长城!

目录 1.前言 2.书单推荐 2.1. 《内网渗透实战攻略》 2.2. 《Kali Linux高级渗透测试&#xff08;原书第4版&#xff09;》 2.3. 《CTF那些事儿》 2.4. 《权限提升技术&#xff1a;攻防实战与技巧》 2.5. 《数字政府网络安全合规性建设指南&#xff1a;密码应用与数据安全…

CentOS6系统因目录有隐含i权限属性致下属文件无法删除的故障一例

CentOS6服务器在升级openssh时因系统目录权限异常&#xff08;有隐含i权限属性&#xff09;&#xff0c;下属文件无法删除&#xff0c;导致系统问题的故障一例。 一、问题现象 CentOS6在升级openssh时&#xff0c;提示如下问题&#xff1a; warning: /etc/ssh/sshd_config c…

五个超实用的 ChatGPT-4o 提示词

GPT-4o 是 OpenAI 最近推出的最新人工智能模型&#xff0c;不仅具备大语言模型的能力&#xff0c;而且拥有多模态模型的看、读、说等能力&#xff0c;而且速度比 GPT-4 更快。下面我们就来介绍几个超实用的 GPT-4o 提示词&#xff0c;帮助大家更好地了解 GPT-4o 的功能和应用场…

Vuforia AR篇(五)— 地平面检测

目录 前言一、什么是地平面识别&#xff1f;二、使用步骤三、示例代码四、效果五、总结 前言 在增强现实&#xff08;AR&#xff09;应用程序的开发中&#xff0c;地平面识别是一项关键技术&#xff0c;它允许虚拟对象与现实世界的地面进行互动。Vuforia 是一个功能强大的 AR …