numpy的基本使用

一、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()

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

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

相关文章

Go微服务: 分布式Cap定理和Base理论

分布式中的Cap定理 CAP理论 C: 一致性&#xff0c;是站在分布式的角度&#xff0c;要么读取到数据&#xff0c;要么读取失败&#xff0c;比如数据库主从&#xff0c;同步时的时候加锁&#xff0c;同步完成才能读到同步的数据&#xff0c;同步完成&#xff0c;才返回数据给程序&…

张大哥笔记:高考,万人过独木桥,你怕不怕摔倒?

今天刷到一个新闻&#xff1a;宁夏煤业计划招600名挖煤的井下操作工&#xff0c;要求大学学历&#xff01;结果却吸引了7900人来报名&#xff01;我都惊呆了&#xff0c;什么时候挖煤都要求这么高的学历了&#xff0c;那读书到底起啥作用&#xff01; 如果一个人读书读到大学后…

java守护线程介绍

在Java中&#xff0c;守护线程&#xff08;Daemon Thread&#xff09;是一种特殊类型的线程&#xff0c;它在后台默默地运行&#xff0c;为其他线程提供服务。当 JVM 中只剩下守护线程时&#xff0c;JVM 会退出。这意味着&#xff0c;守护线程不应该执行关键的任务&#xff0c;…

开源!过程控制与自动化系统

软件介绍 ProviewR是一个基于GPL许可的过程控制与自动化系统&#xff0c;最初由瑞典的Mandator和SSAB Oxelsund开发。作为一个成熟、集成且低成本的自动化解决方案&#xff0c;ProviewR在以Linux作为操作系统的标准PC上运行。该系统包含了顺序控制、调整、数据采集、通信、监控…

带你了解消防安全与应急救援,2024北京消防展6月盛大开启

带你了解消防安全与应急救援&#xff0c;2024北京国际消防展6.26盛大开启 在日益关注安全问题的今天&#xff0c;消防安全与应急救援已经成为社会发展的重要一环。为了提高全民消防安全意识&#xff0c;推动应急救援技术的发展&#xff0c;2024年北京国际消防展将于6月26日盛大…

Verba:终极 RAG 引擎 - 语义搜索、嵌入、矢量搜索等!

原文链接&#xff1a;&#xff08;更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号&#xff01;&#xff09; Verba&#xff1a;终极 RAG 引擎 - 语义搜索、嵌入、矢量搜索等&#xff01; &#x1f31f;在本文中&#xff0c;我们将深入探讨 Verba&am…

人脸属性编辑

目录 StyleFlow StyleFlow 对于属性约束采样: 一张图像Io经由StyleGAN等生成器反向编码后会得到18x512维度的W特征向量,每一个W代表某一个高层级的风格属性,而一张图像经由特定属性分类器分类回归后会得到不同的属性值。在这里有个对应关系,一张图像如果它可以被分类到相…

数学题目系列(一)|丑数|各位和|埃氏筛|欧拉筛

一.丑数 链接&#xff1a;丑数 分析&#xff1a; 丑数只有2&#xff0c;3&#xff0c;5这三个质因数&#xff0c;num 2a 3b 5c也就是一个丑数是由若干个2&#xff0c;3&#xff0c;5组成&#xff0c;那么丑数除以这若干个数字最后一定变为1 代码 class Solution {publi…

Docker安装、使用,容器化部署springboot项目

一、使用官方安装脚本自动安装 安装命令如下&#xff1a; curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 也可以使用国内 daocloud 一键安装命令&#xff1a; curl -sSL https://get.daocloud.io/docker | sh 二、Docker离线安装 1. 下载安装包 可…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-24.5,6 SPI驱动实验-ICM20608 ADC采样值

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

[数据集][图像分类]城市异常情况路边倒树火灾水灾交通事故分类数据集15223张8类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;15223 分类类别数&#xff1a;8 类别名称:[“badroad”,“fallentree”,“f…

【介绍下Spark MLlib机器学习】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

最优化练习题

def f(x):return x*x-4*x5 a0,b01,31、均匀搜索 令 δ ( b 0 − a 0 ) / N , a i a 0 i δ , i 1 , 2 , 3 \delta(b_0-a_0)/N,a_ia_0i\delta,i1,2,3 δ(b0​−a0​)/N,ai​a0​iδ,i1,2,3 while b0-a0>0.1:anp.linspace(a0,b0,5)for i in range(1,4):if f(a[i-1])>f…

RT-Thread

RT-Thread RT-Thread 版权属于上海睿赛德电子科技有限公司&#xff0c;于 2006年 1月首次发布&#xff0c;初始版 本号为0.1.0&#xff0c;经过 10来年的发展&#xff0c;如今主版本号已经升级到3.0&#xff0c;累计开发者达到数百万&#xff0c; 在各行各业产品中装机量达到了…

zabbix“专家坐诊”第241期问答

问题一 Q&#xff1a;华为交换机的100GE 1/0/1口的光模块收光值监测不到&#xff0c;有没有人碰到过这个问题呢&#xff1f;其他的端口都能监测到收光值&#xff0c;但是100GE 1/0/1口监测不到收光值。底层能查到&#xff0c;zabbix 6.0监控不到&#xff0c;以下是端口的报错信…

引用(C++)和内联函数

前言&#xff1a;本文主要讲解C语法中引用如何使用和使用时的一些技巧 基本语法 引用就是取别名 #include <iostream> using namespace std; int main() {int a 10;int& b a;//给a取别名为bcout << a << endl;cout << b << endl;return 0…

Apple开发者macOS描述文件创建

1.选择Profiles然后点击加号创建 2.选择类型为macOS App Development然后点击继续 3.选择描述类型与App ID 然后点击继续 4.选择证书然后点击继续 5.选择设备,然后点击继续 6.输入描述文件后,点击生成 生成成功,点击下载描述文件 下载完成会自动打开描述文件

1.Rust安装

目录 一、安装1.1 在Windows上安装1.2 在Linux下安装 二、包管理工具三、Hello World3.1 安装IDE3.2 输出Hello World 一、安装 1.1 在Windows上安装 点击页面 安装 Rust - Rust 程序设计语言 (rust-lang.org)&#xff0c;选择"下载RUSTUP-INIT.EXE(64位&#xff09;&qu…

一.网络基础——OSI七层模型

一.OSI七层模型 OSI&#xff08;Open System Interconnection&#xff0c;开放系统互连&#xff09;七层网络模型被称为开放式系统互联参考模型&#xff0c;它是一个逻辑上的定义和规范; 它把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备&#xff0c;比如路由器&…

SpringBoot高手之路04-Aop

文章目录 AOP 基础AOP概述start依赖,开发某一个功能,只需要下载这一个依赖,关于他的依赖都会下载下来 AOP快速入门AOP核心概念 切入点表达式-execution AOP 基础 AOP概述 AOP 对特定的方法做增强 AOP 快速入门 start依赖,开发某一个功能,只需要下载这一个依赖,关于他的依赖…