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

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

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

相关文章

Datetime,一个 Python 的时间掌控者

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 一个简单的库&#xff0c;也许能够开启我们的智慧之门&#xff0c; 一个普通的方法&#xff0c;也许能在危急时刻挽救我们于水深火热&#xff0c; 一个新颖的思维方式&#xff0c;也许能…

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

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

#01 Stable Diffusion基础入门:了解AI图像生成

文章目录 前言什么是Stable Diffusion?Stable Diffusion的工作原理如何使用Stable Diffusion?Stable Diffusion的应用场景结论 前言 在当今迅速发展的人工智能领域&#xff0c;AI图像生成技术以其独特的魅力吸引了广泛的关注。Stable Diffusion作为其中的一项前沿技术&#…

【Java毕业设计】基于JSP+SSM的物流管理系统

文章目录 目 录摘要ABSTRACT1 概述1.1 课题背景及意义1.2 国内外研究现状1.3 本课题主要工作 2 系统开发环境2.1 JSP技术2.2 JavaScript2.3 B/S结构2.4 HTML简介 3 系统分析3.1 可行性分析3.1.1 技术可行性3.1.2操作可行性3.1.3 经济可行性3.1.4 法律可行性 3.2系统流程设计3.2…

Python文档生成工具库之alabaster使用详解

概要 在编写文档时,美观和易读性是两个重要的方面。Sphinx 是一个广泛使用的文档生成工具,而 Alabaster 是 Sphinx 默认的主题。alabaster 主题以其简洁优雅的设计和易用的配置选项受到广大用户的欢迎。本文将详细介绍 alabaster 库,包括其安装方法、主要特性、基本和高级功…

Go实战 | 使用Go-Fiber采用分层架构搭建一个简单的Web服务

前言 &#x1f4e2;博客主页&#xff1a;程序源⠀-CSDN博客 &#x1f4e2;欢迎点赞&#x1f44d;收藏⭐留言&#x1f4dd;如有错误敬请指正&#xff01; 一、环境准备、示例介绍 Go语言安装&#xff0c;GoLand编辑器 这个示例实现了一个简单的待办事项&#xff08;todo&#xf…

halo进阶-主题插件使用

开始捣鼓捣鼓halo&#xff0c;换换主题&#xff0c;加个页面 可参考&#xff1a;Halo 文档 安装/更新主题 主题如同壁纸&#xff0c;萝卜青菜各有所爱&#xff0c;大家按需更换即可&#xff1b; Halo好在一键更换主题&#xff0c;炒鸡方便。 安装/更新插件 此插件还扩展了插件…

【数据结构】C语言实现二叉树的基本操作——二叉树的遍历(先序遍历、中序遍历、后序遍历)

C语言实现二叉树的基本操作 导读一、二叉树的遍历二、先序遍历三、中序遍历四、后序遍历五、结点序列六、递归算法与非递归算法的转化结语 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 通过前面的介绍&#xff0c;我们已经认识了二叉树…

1.6T模块与DSP技术的演进

近日&#xff0c;光通信行业市场机构LightCounting在市场报告中指出&#xff0c;去年的模块供应商已经展示了首批1.6T光学模块的风采&#xff0c;而今年&#xff0c;DSP供应商更是着眼于第二代1.6T模块设计的未来。这些前沿技术的突破&#xff0c;不仅代表了数据传输速度的飞跃…

三十九、openlayers官网示例Extent Interaction解析——在地图上绘制范围并获取数据

官网demo 地址&#xff1a; Extent Interaction 在openlayers中可以使用ExtentInteraction添加交互事件&#xff0c;配合shiftKeyOnly实现按住shift键绘制边界区域。 const map new Map({layers: [new TileLayer({source: new OSM(),}),],target: "map",view: new …

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

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

AI大模型语料库

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 语料库概述 语料库&#xff08;Corpus&#xff09;是一个存储了大量真实语言使用实例的集合&#xff0c;这些实例可以是文本、语音、视频等多种形式的语言数据。语料库通常…

ESP32 Error creating RestrictedPinnedToCore

随缘记&#xff0c;刚遇到&#xff0c;等以后就可能不想来写笔记了。 目前要使用到音频数据&#xff0c;所以去用ESP-ADF&#xff0c;但在使用例程上出现了这个API有问题&#xff0c;要去打补丁。 但是我打补丁的时候git bash里显示not apply&#xff0c;不能打上。 网上看到…

物联网开发tcp协议之——netty拆包问题

1.前言 tcp协议是物联网开发中比较常见的一种通信协议&#xff0c;而netty则是一tcp通信协议中一个比较优秀的框架。tcp协议是一种长连接的协议&#xff0c;是流式传输的&#xff0c;开发过程中最长遇见的问题就是拆包粘包问题。我目前对接过的物联网系列有智能家居设备&#…

神奇的python语法

今天发现一个神奇的语法规则 import numpy as np aa np.zeros((4,3)) print(aa) print(aa .shape[0] * aa. shape[1])结果是不报错的 结果是正常运行的 包括在jupyter里面&#xff0c;这种写法还是没有报错

氧兜:新一代隔热防晒膜,打造您的健康氧吧,开启品质生活新篇章

随着人们对生活品质追求的不断提升&#xff0c;氧兜品牌凭借创新科技&#xff0c;为您带来了新一代隔热防晒膜。它不仅具备卓越的隔热防晒功能&#xff0c;更能通过释放负氧离子&#xff0c;为您打造一个居家办公或出行环境的氧吧&#xff0c;让您的生活更加健康、舒适。 一、…

三十四篇:办公效率革命:深入探索办公自动化系统的全面策略

办公效率革命&#xff1a;深入探索办公自动化系统的全面策略 1. 引言 1.1 办公自动化系统&#xff08;OAS&#xff09;的定义与关键作用 在当前的企业环境中&#xff0c;办公自动化系统&#xff08;Office Automation System, OAS&#xff09;已成为提高效率和执行力的关键技…

全面守护你的健康ZL-0891A小动物多参数监护仪

简单介绍&#xff1a; 12.1英寸彩色TFT显示&#xff0c;分辨率800X600,采用数字血氧DSP算法&#xff0c;低灌注&#xff0c;小动物多参数监护仪具有优良的抗运动性能;动物用血压算法&#xff0c;支持测量各种动物类型,特有的中英文语音报警;支持USB数据导出&#xff0c;可以在…

Ubuntu部署开源网关Apache APISIX

说明 系统&#xff1a;Ubuntu 24.04 LTSDocker版本&#xff1a;v26.1.3Docker Compose版本&#xff1a;v2.26.1 下载和配置 Ubuntu需要安装Docker和Docker Compose 下载apisix-docker仓库 git clone https://github.com/apache/apisix-docker.git修改docker-compose 配置e…

C语言小例程8/100

题目&#xff1a;输出特殊图案&#xff0c;请在c环境中运行&#xff0c;看一看 程序分析&#xff1a;字符共有256个。不同字符&#xff0c;图形不一样。 #include<stdio.h> int main() {char a176,b219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c…