Python之numpy常用知识点总结

文章目录

    • 前言
      • 知识点1:np.maximum
      • 知识点2:ndarray数据类型
      • 知识点3:数据运算
      • 知识点4:数组和标量间的运算
      • 知识点5:数组的索引和切片
      • 知识点6:数组的转置和轴对称
      • 知识点7:检索数组元素

前言

  在机器学习中numpy库是一个常用的库,接下来介绍一下numpy常用的知识点绝对会帮到你的,不信你往下看;
在这里插入图片描述
看完这篇还有两篇学不完的知识,加油哦!

目标检测1–Pytorch目标检测之yolov1
目标检测2–yolov1中相关基础知识(边框回归、交并比、nms)介绍

知识点1:np.maximum

  np.maximum 是 NumPy 库中的一个函数,用于逐元素比较两个数组,并返回元素间最大值组成的数组;

a = np.array([1, 2, 3, 4])  
b = np.array([4, 3, 2, 1])  
  
result = np.maximum(a, b)  
print(result)  # 输出: [4 3 3 4]

  np.maximum中如果两个数组的大小不同,则较小的数组会被广播(broadcast)以匹配较大数组的形状。

a = np.array([[1, 2], [3, 4]])  
b = np.array([2, 3])  
  
result = np.maximum(a, b)  
print(result)  # 输出: [[2 3] [3 4]]

知识点2:ndarray数据类型

  查看ndarray的数据类型:

data = np.array([[1,2,3],[4,5,6]])

print(data.dtype.name)  # 输出int32

  转换ndarray的数据类型并查看:

data_convert = data.astype("float32")

print(data_convert.dtype.name)   # 输出float32

知识点3:数据运算

  多维数组间的加减乘除运算:

a = np.array([[1, 2], [3, 4]])  
b = np.array([[3, 2], [4, 4]])  
print(a+b)   #输出:[[4, 4], [7, 8]]
print(a-b)   #输出:[[-2, 0], [-1, 0]]
print(a*b)   #输出:[[3, 4], [12, 16]]
print(a/b)   #输出:[[0.3333, 1], [0.75, 1]]

知识点4:数组和标量间的运算

  多维数组与标量间的加减乘除运算:

a = np.array([[1, 2], [3, 4]])  
c = 3 
print(a+c)   #输出:[[3, 5], [6, 7]]
print(a-c)   #输出:[[-2, -1], [0, 1]]
print(a*c)   #输出:[[3, 6], [9, 12]]
print(a/c)   #输出:[[0.3333, 0.6666], [1, 1.3333]]

知识点5:数组的索引和切片

arr = np.arange(8)   #创建一个连续的步长为1的一维数组
print(arr)  #输出:[0 1 2 3 4 5 6 7]

arr2 = np.arange(8, 20, 2)   #创建一个首值为8终值为20步长为2的一维数组
print(arr2)  #输出:[ 8 10 12 14 16 18]

result1 = arr[5]  #获取索引为5的元素
print(result1)  #输出:5

result2 = arr[5:7]  #获取索引为5到7的元素(不包括7)
print(result2)  #输出:[5 6]

result3 = arr[1:5:2]  #获取索引为1到5的步长为2元素(不包括5)
print(result3)  #输出:[1 3]

知识点6:数组的转置和轴对称

  二维数组求转置:

arr3 = np.arange(12).reshape(3, 4)
print(arr3)     #输出:[[ 0  1  2  3],[ 4  5  6  7],[ 8  9 10 11]]  
arr3_T = arr3.T  
print(arr3_T)     #输出:[[ 0  4  8],[ 1  5  9],[ 2  6 10],[ 3  7 11]]  

  三维数组求转置函数np.transpose:

arr4 = np.arange(16).reshape(2, 2, 4)
print(arr4)     #输出:[[[ 0  1  2  3],[ 4  5  6  7]], [[ 8  9 10 11],[12 13 14 15]]]  (2个2行4列的数组)

# 三维数组的转置函数transpose
# 默认情况下,三维数组的轴顺序是 (0, 1, 2),其中 0 是最外层的维度  
# 通过指定 axes=(1, 0, 2),我们可以将第一个和第二个轴互换
arr4_T = arr4.transpose(2, 1, 0)
print(arr4_T)   #结果[[[ 0  8],[ 4 12]],[[ 1  9],[ 5 13]],[[ 2 10],[ 6 14]],[[ 3 11],[ 7 15]]]

  三维数组交换轴函数swapaxes:

numpy.swapaxes(a, axis1, axis2)
  • a:要交换轴的数组。
  • axis1:要交换的第一个轴的索引。
  • axis2:要交换的第二个轴的索引。

  这个函数会返回一个新的数组,其中 axis1 和 axis2 指定的轴被交换了位置,而数组的其他轴保持不变。

例如,考虑一个三维数组(形状为 (i, j, k)),你可以使用 np.swapaxes 来交换第一个和第二个轴,或者第二个和第三个轴,等等。

import numpy as np  
  
# 创建一个三维数组  
arr_3d = np.arange(24).reshape(2, 3, 4)  
  
# 交换第一个和第二个轴  
swapped_arr_1 = np.swapaxes(arr_3d, 0, 1)  
print(swapped_arr_1.shape)  # 输出: (3, 2, 4)  
  
# 交换第二个和第三个轴  
swapped_arr_2 = np.swapaxes(arr_3d, 1, 2)  
print(swapped_arr_2.shape)  # 输出: (2, 4, 3)  
  
# 注意:如果你尝试交换不存在的轴,比如对于上面的数组尝试交换第4个轴,将会引发 ValueError  
# np.swapaxes(arr_3d, 0, 3)  # 这会抛出 ValueError

知识点7:检索数组元素

arr6 = np.array([[1, 2], [3, 4]]) 
flag1 = np.any(arr6 < 0)
print(flag1)        #结果False (arr6所有元素是否有一个小于0)
flag2 = np.any(arr6 > 0)
print(flag2)        #结果True (arr6所有元素是否都大于0)

如有错误欢迎指正,如果帮到您请点赞加收藏哦!

以上程序可以关注我的微信公众号:回复“numpy常用知识点总结”领取;另外回复"深度学习资料"领取深度学习相关资料(100本人工智能书籍),实时更新深度学习相关知识!

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

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

相关文章

【应急响应】Windows应急响应 - 基础命令篇

前言 在如今的数字化时代&#xff0c;Windows系统面对着越来越复杂的网络威胁和安全挑战。本文将深入探讨在Windows环境下的实战应急响应策略。我们将重点关注实际应急响应流程、关键工具的应用&#xff0c;以及如何快速准确地识别和应对安全事件。通过分享实际案例分析&#…

基于S32K144驱动NSD8381

文章目录 1.前言2.芯片介绍2.1 芯片简介2.2 硬件特性2.3 软件特性 3.测试环境3.1 工具3.2 架构 4.软件驱动4.1 SPI4.2 CTRL引脚4.3 寄存器4.4 双极性步进电机驱动流程 5.测试情况6.参考资料 1.前言 最近有些做电磁阀和调光大灯的客户需要寻找国产的双极性步进电机驱动&#xf…

QT入门笔记-自定义控件封装 30

具体代码如下: QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 …

Spring AOP源码篇四之 数据库事务

了解了Spring AOP执行过程&#xff0c;再看Spring事务源码其实非常简单。 首先从简单使用开始, 演示Spring事务使用过程 Xml配置&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema…

软件架构之数据库系统(2)

软件架构之数据库系统&#xff08;2&#xff09; 3.4 事务管理3.4.1 并发控制3.4.2 故障与恢复 3.5 备份与恢复3.6分布式数据库系统3.6.1分布式数据库的概念3.6.2 分布式数据库的架构 3.7 数据仓库3.7.1 数据仓库的概念3.7.2数据仓库的结构3.7.3 数据仓库的实现方法 3.8 数据挖…

超高精电容传感器PCAP01调试+LABVIEW数据可视化调试手记

PCAP01超高精电容传感芯片STM32LabView可视化 文章目录 PCAP01超高精电容传感芯片STM32LabView可视化一、PCAP01介绍1.1、PCAP01引脚定义1.2、电容测量1.3、温度测量1.4、PCAP典型测试电路 二、PCAP01的STM32驱动2.1、SPI协议配置2.2、PCAP01浮空电容测量内部温度测量操作流程 …

计算机系统简述

目标 计算机世界并非如此神秘。相反&#xff0c;计算机是非常“确定”的一个系统&#xff0c;即在任何时候&#xff0c;在相同的方法、相同的状态下&#xff08;当然还包括相同的起始条件&#xff09;&#xff0c;同样的问题必然获得相同的结果。其实&#xff0c;计算机并不是…

前端实现无缝自动滚动动画

1. 前言: 前端使用HTMLCSS实现一个无缝滚动的列表效果 示例图: 2. 源码 html部分源码: <!--* Author: wangZhiyu <w3209605851163.com>* Date: 2024-07-05 23:33:20* LastEditTime: 2024-07-05 23:49:09* LastEditors: wangZhiyu <w3209605851163.com>* File…

强化学习的数学原理:时序差分算法

概述 之前第五次课时学习的 蒙特卡洛 的方法是全课程当中第一次介绍的第一种 model-free 的方法&#xff0c;而本次课的 Temporal-Difference Learning 简称 TD learning &#xff08;时序差分算法&#xff09;就是第二种 model-free 的方法。而对于 蒙特卡洛方法其是一种 non…

使用大漠插件进行京东联盟转链

由于之前开发了一套使用api转链的接口在前面几个月失效了。因为京东联盟系统升级&#xff0c;导致之前可以转的链接现在必须要升级权限才可以。但是升级条件对于我们这些自己买东西转链想省点钱的人来说基本上达不到。 所以&#xff0c;基于这种情况。我之前研究过大漠插件&am…

数据库的学习(4)

一、题目 1、创建数据表qrade: CREATE TABLE grade(id INT NOT NULL,sex CHAR(1),firstname VARCHAR(20)NOT NULL,lastname VARCHAR(20)NOT NULL,english FLOAT,math FLOAT,chinese FLOAT ); 2、向数据表grade中插入几条数据: (3,mAllenwiiliam,88.0,92.0 95.0), (4,m,George&…

第七篇——攻谋篇:兵法第一原则——兵力原则,以多胜少

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 微观层面上&#xff0c;也有很多值得深度思考的问题 二、思路&方案 …

用ThreadLocal解决线程隔离问题

存在的以下代码所示的线程隔离问题&#xff1a; package study.用ThreadLocal解决线程隔离问题;/*线程隔离 - 在多线程并发场景下&#xff0c;每个线程的变量都应该是相互独立的线程A&#xff1a;设置&#xff08;变量1&#xff09; 获取&#xff08;变量1&#xff09;线程B&a…

瑞芯微rk356x TF卡烧写选择指定的屏幕打印烧写的过程

rk356x中TF卡烧写屏幕选择 1、开发环境2、问题描述3、解决办法4、总结5、 图片展示1、开发环境 系统:linux系统 芯片:356x 显示:多屏显示(HDMI, MIPI, LVDS, EDP) 2、问题描述 由于在多屏显示的情况下,HDMI屏在LVDS、MIPI或者EDP协同下,默认情况下,在TF卡烧录过程中…

论文润色最强最实用ChatGPT提示词指令

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥&#xff08;yida985&#xff09;交流&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步&a…

C++语言相关的常见面试题目(二)

1.vector底层实现原理 以下是 std::vector 的一般底层实现原理&#xff1a; 内存分配&#xff1a;当创建一个 std::vector 对象时&#xff0c;会分配一块初始大小的连续内存空间来存储元素。这个大小通常会随着 push_back() 操作而动态增加。 容量和大小&#xff1a;std::vec…

【Linux】进程间的通信----管道

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

妈妈带女儿美在心里

在这个充满温情与惊喜的午后&#xff0c;阳光温柔地洒落在每一个角落&#xff0c;仿佛连空气弥漫着幸福的味道。就在这样一个平凡的时刻&#xff0c;一段关于爱与成长的温馨画面&#xff0c;悄然在网络上绽放&#xff0c;引爆了无数人的心弦——#奚梦瑶2岁女儿身高#&#xff0c…

在 VS Code 中自动化 Xcode 项目编译和调试

在 VS Code 中自动化 Xcode 项目编译和调试 在日常的开发工作中&#xff0c;Xcode 是 macOS、iOS、watchOS 和 tvOS 应用程序开发的主要工具。为了提高工作效率&#xff0c;许多开发者选择在 Visual Studio Code (VS Code) 中编辑代码&#xff0c;并希望能够直接从 VS Code 启…

【vue组件库搭建06】组件库构建及npm发包

一、格式化目录结构 根据以下图片搭建组件库目录 index.js作为入口文件&#xff0c;将所有组件引入&#xff0c;并注册组件名称 import { EButton } from "./Button"; export * from "./Button"; import { ECard } from "./Card"; export * fr…