学习Numpy的奇思妙想

学习Numpy的奇思妙想

本文主要想记录一下,学习 numpy 过程中的偶然的灵感,并记录一下知识框架。
推荐资源:https://numpy.org/doc/stable/user/absolute_beginners.html

💡灵感

  • 为什么 numpy 数组的 shape 和 pytorch 是 tensor 是反着的??

    • 在读入一个 RGB 图像的时候,pytorch 的张量通常是(batch, channel, height, width),但是 numpy 的数组形状通常是(height, width, channel)
    • 把数组转换成张量直接用 transform.ToTensor(),但是在把 tensor 转换成张量并用matplotlib 显示前要注意转换维度。
      from torchvision import transforms, datasets
      from torch.utils.data import DataLoader
      from PIL import Image# 定义转换操作,将图片转换为 tensor
      transform = transforms.Compose([transforms.Resize((256, 256)),transforms.ToTensor(),
      ])# 加载单个图片
      image_pil = Image.open('path_to_image.jpg')
      image_tensor = transform(image_pil)# 显示图片形状
      print(image_tensor.shape)  # 输出可能是 (channels, height, width)# 注意:PyTorch 的 tensor 需要先转置维度,然后才能用 matplotlib 显示
      plt.imshow(image_tensor.permute(1, 2, 0))
      plt.show()
      
    • 💡猜想一下 numpy 是如何计算数组形状的,可能是numpy得到一个输入的列表,会先查看他的 len,得到一个数,这个就是第 0 维度,然后查看数组中第一个元素的 len,这个就是第 1 维度,以此类推。就像剥洋葱一样,一层一层的剥开他的心。
      import numpy as np
      a = [[[1,2,3],[4,5,6]]]
      print(len(a)) # 1
      print(len(a[0])) # 2
      print(len(a[0][0])) # 3
      print(np.array(a).shape) # (1,2,3)
      
    • 图片保存的时候,RGB 统一保存成一个颜色,比如#FFFFFF,他是在一起的,所以 channel 对于 numpy 来说在最后边。
  • ⚠️ list 的索引返回副本(深拷贝),ndarry 的索引返回视图(浅拷贝)

    • 这个是例子
      import numpy as np
      a_list = [1,2,3,4,5,6]
      a_array = np.array(a_list)b_list = a_list[0:4]
      b_list[0] = 100
      print(b_list, a_list) 
      # [100, 2, 3, 4] [1, 2, 3, 4, 5, 6]b_array = a_array[0:4]
      b_array[0] = 100
      print(b_array, a_array) 
      # [100   2   3   4] [100   2   3   4   5   6]
      
    • 同样,展平数组时,.flatten().ravel()的区别也是如此, ravel() 创建的新数组实际上是对父数组的引用(即,“视图”)。这意味着对新数组的任何更改也会影响父数组。由于 ravel() 不创建副本,因此它的内存效率很高。
  • ⚠️ empty 不是真的 empty

    • np.empty 创建的并不是0,他直接在内存上开辟空间,存储的是“随机”的内容,可能全是 0,也可能不是 0。
    • np.zeros 创建的才是真正的 0。
    • np.random.rand 创建的才是真正的随机。

Numpy组织结构

https://numpy.org/doc/stable/reference/module_structure.html

  • 【推荐使用】Main namespaces(Regular/recommended user-facing namespaces for general use)
    • numpy
    • numpy.exceptions
    • numpy.fft
    • numpy.linalg
    • numpy.polynomial
    • numpy.random
    • numpy.strings
    • numpy.testing
    • numpy.typing
  • 【推荐使用】Special-purpose namespaces
    • numpy.ctypeslib - interacting with NumPy objects with ctypes
    • numpy.dtypes - dtype classes (typically not used directly by end users)
    • numpy.emath - mathematical functions with automatic domain
    • numpy.lib - utilities & functionality which do not fit the main namespace
    • numpy.rec - record arrays (largely superseded by dataframe libraries)
    • numpy.version - small module with more detailed version info
  • 【不建议使用】Legacy namespaces(Prefer not to use these namespaces for new code. There are better alternatives and/or this code is deprecated or isn’t reliable.)
    • numpy.char - legacy string functionality, only for fixed-width strings
    • numpy.distutils (deprecated) - build system support
    • numpy.f2py - Fortran binding generation (usually used from the command line only)
    • numpy.ma - masked arrays (not very reliable, needs an overhaul)
    • numpy.matlib (pending deprecation) - functions supporting matrix instances

最后附上思维导图,以后有机会可以探索更多的细节
在这里插入图片描述

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

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

相关文章

等保2.0测评 — 容器测评对象选取

之前有小伙伴提问到,关于容器到底要测评哪些内容,也就是测评对象的选取。 首先要区分的是容器与容器集群这两个概念。容器集群概念可参考该篇文章。 不使用容器扩展要求情况 当仅使用容器技术时,采用安全通用要求,无需使用容器…

昇思25天学习打卡营第15天|探索 Diffusion 扩散模型:从构建到应用的全过程

目录 环境配置 构建Diffusion模型 位置向量 ResNet/ConvNeXT块 Attention模块 组规一化 条件U-Net 正向扩散 数据准备与处理 训练过程 推理过程 环境配置 首先进行环境配置、库的导入和一些设置操作,具体代码如下: %%capture captured_output …

土体的有效应力原理

土体的有效应力原理 有效应力原则1. 总应力的测定2. 孔隙水压力的测定3. 有效应力的确定 有效应力的重要性 土体中的有效应力原理是卡尔太沙基在1936年提出的重要理论之一。它是总应力和孔隙水压力之间的差值。下面简要说明土壤中有效应力的更多特征和测定。 有效应力原则 有…

python中kerea库的使用方法

Keras是一个高层神经网络API,用于简化构建和训练深度学习模型的过程。它能够在TensorFlow、Theano和CNTK之上运行。Keras的主要目标是使深度学习更容易上手,并加速实验进程。以下是关于Keras库的详细介绍及其使用方法。 安装Keras 在开始使用Keras之前&…

基于城市感知的公共交通多源异构数据融合的应用研究申请书

基于城市感知的公共交通多源异构数据融合的应用研究 研究意义 基于城市感知的公共交通多源异构数据融合的应用研究具有广泛的研究意义, 提升交通效率:利用多源数据,可以为公共交通管理提供更为全面和准确的信息,从而优化线路设…

pytorch-openpose代码笔记

1.cv2.imread(filename, flags) 参数: filepath:读入imge的完整路径 flags:标志位,{cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED} cv2.IMREAD_COLOR:默认参数,读入…

人工智能入门第一篇:简单理解GPU和CPU

目录 1,GPU就是显卡吗2,CPU和GPU到底是什么区别3,CUDA是什么4,为什么人工智能离不开GPU 1,GPU就是显卡吗 ‌不是,显卡和‌GPU是两个相关但不完全相同的概念,GPU是显卡的核心部分,但…

ssh 报: “no matching host key type found. Their offer“

ssh 报: “no matching host key type found. Their offer” 240729 用 Windows11环境下的 git bash 自带的 ssh 登录 virtualbox上的CentOS6.10时, 报:“no matching host key type found. Their offer” git版本: git version 2.43.0.windows.1 ssh版本: OpenSSH_9.5p1, Op…

Self-study Python Fish-C Note13 P48to49

函数 (part 3) 本节主要讲函数的 lambda 表达式, 生成器 lambda 表达式 (匿名函数)(P48) 匿名函数(lambda 表达式)语法规则:lambda arg1, arg2, arg3, ... argN : expression。 其中 arg 为参…

Google Test 学习笔记(简称GTest)

文章目录 一、介绍1.1 介绍1.2 教程 二、使用2.1 基本使用2.1.1 安装GTest (下载和编译)2.1.2 编写测试2.1.3 运行测试2.1.4 高级特性2.1.5 调试和分析 2.2 源码自带测试用例2.3 TEST 使用2.3.1 TestCase的介绍2.3.2 TEST宏demo1demo2 2.3.3 TEST_F宏2.3…

wincc 远程和PLC通讯方案

有 5个污水厂 的数据需要集中监控到1个组态软件上,软件是WINCC。每个污水厂监控系统都是独立的,已经投入运行了, 分站也是WINCC 和西门子PLC 。采用巨控远程模块的话,有两种方式:一种是从现场的PLC取数据,一种是从分站…

2019数字经济公测大赛-VMware逃逸

文章目录 环境搭建漏洞点exp 环境搭建 ubuntu :18.04.01vmware: VMware-Workstation-Full-15.5.0-14665864.x86_64.bundle 这里环境搭不成功。。patch过后就报错,不知道咋搞 发现可能是IDA加载后的patch似乎不行对原来的patch可能有影响,重新下了patch&…

【8月EI会议推荐】第四届区块链技术与信息安全国际会议

一、会议信息 大会官网:http://www.bctis.nhttp://www.icbdsme.org/ 官方邮箱:icbctis126.com 组委会联系人:杨老师 19911536763 支持单位:中原工学院、西安工程大学、齐鲁工业大学(山东省科学院)、澳门…

SpringCloud Alibaba 实战:搭建第一个 SpringCloud Alibaba 项目

SpringCloud Alibaba 实战:搭建第一个 SpringCloud Alibaba 项目 引言 在现代微服务架构中,SpringCloud 已经成为开发者构建分布式系统的首选工具之一。SpringCloud Alibaba 是 SpringCloud 生态中的一个重要子集,提供了一整套微服务开发的…

java设计原则和具体应用

在Java设计中,遵循一些核心的设计原则可以极大地提高代码的可读性、可维护性、可扩展性和复用性。以下是一些关键的Java设计原则: 1. 单一职责原则(Single Responsibility Principle, SRP) 原则说明:一个类应该仅有一…

科大讯飞语音转写demo go语言版

上传了一个语音文件,识别效果。 package audioimport ("bytes""crypto/hmac""crypto/md5""crypto/sha1""encoding/base64""encoding/json""fmt""io/ioutil""net/http"…

【图文详解】Spring是如何解决循环依赖的?

Spring是如何解决循环依赖的呢? 很多小伙伴在面试时都被问到过这个问题,刷到过这个题的同学马上就能回答出来:“利用三级缓存”。面试官接着追问:“哪三级缓存呢?用两级行不行呢?” 这时候如果没有深入研究…

Vs2022+QT+Opencv 一些需要注意的地方

要在vs2022创建QT项目,先要安装一个插件Qt Visual Studio Tools,根据个人经验选择LEGACY Qt Visual Studio Tools好一些,看以下内容之前建议先在vs2022中配置好opencv,配置方式建议以属性表的形式保存在硬盘上。 设置QT路径 打开v…

清华计算几何-算法LowBound和ConvexHull(凸包)-GrahamScan

算法复杂度最低界限LowBound 算法求解复杂度是否存在一个最低界限,有时候想尽一切办法优化一个算法,去优化其复杂度,比如 清华计算几何-ConvexHull(凸包)-求极点InTriangle/ToLeft Test-CSDN博客 清华计算几何-ConvexHull(凸包)-求极边_计…

DeFi革命:揭秘去中心化金融的核心技术与实操指南

目录 DeFi(去中心化金融)综述 基本特点 第一,DeFi 是无许可的金融 第二,DeFi 是无门槛的金融 第三,DeFi 是无人驾驶的金融 典型商业模式 闪电贷 MakerDAO 面临的挑战 DeFi技术要点 椭圆曲线签名 EIP-712:…