当前位置: 首页 > news >正文

NumPy Ndarray学习

1.NumPy Ndarray 对象简介

    NumPy 最重要的特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。

2.Ndarray 内部组成

(1)一个指向数据(内存或内存映射文件中的一块数据)的指针。

(2)数据类型或 dtype,描述在数组中的固定大小值的格子。

(3)一个表示数组形状(shape)的元组,表示各维度大小的元组。

(4)一个跨度元组(stride),整数是为了前进到当前维度中下一个元素需要"跨过"的字节数。

3.Ndarray关键组成部分

(1)数据缓冲区(Data Buffer):存储数组元素的连续内存块,所有数据都以二进制格式保存在内存中。ndarray 支持各种数据类型,例如 int32、float64,这些数据类型通过 dtype 属性定义。

(2)数据类型描述符 (dtype):指定数组中每个元素的数据类型和大小。例如,int32 表示每个整数占 4 字节,float64 表示每个浮点数占 8 字节。dtype 还可以表示结构化数据类型,即包含多个字段的复合数据类型。

(3)维度 (shape):shape 是表示数组维数的元组。例如二维数组的 shape 属性可能是 (3, 4),表示数组有 3 行 4 列。shape 定义数据的逻辑结构,尽管所有元素是连续存储的。

(4)步长 (strides):表示在数组的每个维度中移动一个元素所需的字节数。strides 是与 shape 相同大小的元组,用于计算内存地址。例如,步长 (16, 4) 表示移动到下一行需要 16 字节,而在同一行中移动一个元素需要 4 字节。

(5)维数 (ndim):数组的维数。例如,标量的维数是 0,向量的维数是 1,矩阵的维数是 2。

(6)大小 (size):数组中元素的总数,即所有维度大小的乘积。例如,shape 为 (3, 4) 的数组,其 size 为 12。

(7)内存布局:ndarray 支持多种内存布局,例如C 语言风格(行优先,C_CONTIGUOUS)或 Fortran 风格(列优先,F_CONTIGUOUS)。内存布局影响数据的存储方式以及遍历数据效率。

4.Ndarray 的内部结构

     跨度可以是负数,这会使数组在内存中后向移动。假设存在数组 obj = np.array([1, 2, 3, 4]),若使用切片 obj[::-1],步长为负数,数组会从最后一个元素反向读取,得到 [4, 3, 2, 1] 的结果。

(1)header:ndarray 的头部,包含了数组的元信息,如维数(ndim)、形状(shape)和步长(strides)等。这些信息定义数组的维度、数据布局以及如何通过步长在内存中访问数组元素。

(2)data-type:数组元素的数据类型定义,描述了数组每个元素的存储类型,例如 int32、float64 等。data-type 信息与数据缓冲区关联,用来解释每个元素的存储格式。

(3)ndarray 数据块:这是数组的实际数据存储区域,包含了数组的元素。元素在内存中按照 shape 和 strides 的定义顺序排列。这里的黑色方框表示一个特定的元素(标注为 array scalar)。

(4)array scalar:这个元素被从数组数据块中提取出来,可能是为了进行单独操作或计算。通过头部中的信息和步长可以找到并访问到这个元素。

(5)步长为负:图中还说明了 ndarray 的步长可以是负数,这意味着数组可以在内存中反向移动。通过使用负步长可以实现反向切片,如 obj[::-1] 或 obj[:, ::-1],从而使数组从最后一个元素开始向前访问数据。这种操作方式在不实际复制数据的情况下实现了反向排列。

5.调用 NumPy 的 array 函数创建ndarray

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

(1)object:数组或嵌套的数列

(2)dtype:数组元素的数据类型,可选

(3)copy:对象是否需要复制,可选

(4)order:创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)

(5)subok:默认返回一个与基类类型一致的数组

(6)ndmin:指定生成数组的最小维度

6.使用 numpy 创建并打印简单的一维数组

import numpy as np
a = np.array([1,2,3]) 
print (a)

7.使用 numpy 创建并打印二维数组(矩阵)

# 多于一个维度 
import numpy as np
a = np.array([[1,  2],  [3,  4]]) 
print (a)

8.使用 ndmin 参数将一维数据强制升维为二维

# 最小维度 
import numpy as np
a = np.array([1, 2, 3, 4, 5], ndmin =  2) 
print (a)

9.通过 dtype 参数来指定数组的数据类型

# dtype 参数 
import numpy as np
a = np.array([1,  2,  3], dtype = complex) 
print (a)

相关文章:

NumPy Ndarray学习

1.NumPy Ndarray 对象简介 NumPy 最重要的特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。 2.N…...

Browserslist 配置

Browserslist 是一个工具和规范,用于定义和共享支持的浏览器列表,以便在前端开发中管理不同工具的兼容性。这些工具可以包括 Babel、Autoprefixer、ESLint 等,它们都可以使用 Browserslist 提供的配置来确定应支持哪些浏览器及其版本。 主要…...

vue2中的v-bind相当于原生js的什么

在 Vue 2 中&#xff0c;v-bind 是一个指令&#xff0c;用于动态地将一个或多个属性绑定到 DOM 元素上。它相当于在原生 JavaScript 中直接操作 DOM 元素属性的方法。 v-bind 的基本用法 在 Vue 中&#xff0c;v-bind 可以这样使用&#xff1a; <!-- 绑定一个属性 -->…...

c语言-scanf函数的用法

文章目录 一、scanf是什么&#xff1f;二、通过scanf进行赋值scanf 输入一段带空格的句子&#xff0c; %[^\n] 格式字符串。 三、赋值忽略符 一、scanf是什么&#xff1f; 函数原型&#xff1a;int scanf ( const char * format, … ); scanf是一个格式输出库函数&#xff0c;…...

AI带货主播插件开发之商品推荐模块!

AI带货主播&#xff0c;作为新兴的人工智能技术应用领域&#xff0c;正逐渐改变着电商直播的格局&#xff0c;在这一领域&#xff0c;商品推荐模块是提升用户体验、增加销售额的关键一环。 本文将探讨AI带货主播插件的商品推荐模块开发&#xff0c;并分享五段关键的源代码&…...

使用Nginx作为反向代理和负载均衡器

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Nginx作为反向代理和负载均衡器 引言 Nginx 简介 安装 Nginx Ubuntu CentOS 配置 Nginx 作为反向代理 配置 Nginx 作为负载…...

【数据结构二叉树】C非递归算法实现二叉树的先序、中序、后序遍历

引言: 遍历二叉树&#xff1a;指按某条搜索路径巡访二叉树中每个结点&#xff0c;使得每个结点均被访问一次&#xff0c;而且仅被访问一次。 除了层次遍历外&#xff0c;二叉树有三个重要的遍历方法&#xff1a;先序遍历、中序遍历、后序遍历。 1、递归算法实现先序、中序、后…...

解决网盘资源搜索难题的利器——全面解析哎哟喂啊盘搜及其优秀推荐平台

海量的资源让我们的选择更加丰富,但同时也带来了资源搜索的诸多痛点。无论是寻找最新的影视资源、软件工具,还是各类学习资料,用户常常面临以下几个问题: 资源更新不及时:很多平台资源更新缓慢,用户难以第一时间获取最新内容。 搜索效率低下:关键词搜索不精准,导致需要翻阅大量…...

草料二维码:低成本高效率的访客管理解决方案

在当前的商业和政治环境中&#xff0c;企业和政府机构越来越重视安全保密措施&#xff0c;尤其是对外来人员的行踪记录和管理。访客管理已成为企业运营中不可或缺的一环&#xff0c;它不仅提升了安全性&#xff0c;还增强了效率和便捷性。然而&#xff0c;许多机构仍在使用传统…...

qt管理系统框架(好看界面、漂亮界面、好看的界面、漂亮的界面)

概述 最近一个项目用QT开发&#xff0c;然后找了美工帮设计了下界面。总算完工&#xff0c;后想一下干脆抽出一个基础框架&#xff0c;方便以后用。 功能 支持mysql、echarts。 支持加载动态权限菜单&#xff0c;轻松权限控制。 支持遮罩对话框、抽屉 支持开机启动动画界面 内…...

在VSCode中读取Markdown文件

在VSCode安装Markdown All in One或Markdown Preview Enhanced即可 插件Markdown All in One GitHub&#xff1a;https://github.com/yzhang-gh/vscode-markdown v3.6.2下载链接&#xff1a;https://marketplace.visualstudio.com/_apis/public/gallery/publishers/yzhang/vs…...

Linux rabbitmq客户端 SimpleAmqpClient 源码编译

SimpleAmqpClient的编译成库&#xff0c;加入到工程中 1、下载SimpleAmqpClient 源码&#xff1a; git克隆的路径为&#xff1a;https://github.com/alanxz/SimpleAmqpClient.git 下载压缩包路径&#xff1a;https://codeload.github.com/alanxz/SimpleAmqpClient/zip/maste…...

一台手机可以登录运营多少个TikTok账号?

很多TikTok内容创作者和商家通过运营多个账号来实现品牌曝光和产品销售&#xff0c;这种矩阵运营方式需要一定的技巧和设备成本&#xff0c;那么对于很多新手来说&#xff0c;一台手机可以登录和运营多少个TikTok账号呢&#xff1f; 一、运营TikTok账号的数量限制 TikTok的官…...

Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 房屋信息详情 个人中心 管理员登录界面 管理员功能界面 用户管理界面 房屋信…...

k8s Service四层负载:服务端口暴露

在 Kubernetes 中&#xff0c;通过 Service 可以实现四层&#xff08;L4&#xff09;负载均衡&#xff0c;将流量分发至后端的 Pod。四层负载主要用于传输层&#xff08;TCP/UDP&#xff09;&#xff0c;而不像七层负载均衡&#xff08;HTTP/HTTPS&#xff09;那样进行应用层的…...

QT 关于mousePressEvent无法过滤

QT 关于mousePressEvent无法过滤 bool Filter::eventFilter(QObject *watched, QEvent *event) {// 判断是不是点击事件if((event->type() QEvent::MouseButtonPress) || (event->type() QEvent::MouseButtonDblClick)){//打印一个全局变量static int globalVar 0;gl…...

【VScode】深度对比:Cursor与VScode(CodeMoss)工具,谁才是你的GPT编程最佳助手?

文章目录 一、Cursor的强大功能1.1 Cursor的主要特点1.2 Cursor的使用技巧 二、CodeMoss的功能2.1 CodeMoss的主要特点2.2 CodeMoss的使用技巧 三、Cursor与CodeMoss的对比分析3.1 功能对比3.2 性能对比 四、总结与展望 在科技迅猛发展的今天&#xff0c;AI编程工具如雨后春笋般…...

大数据计算里的-Runtime Filter

文章目录 Runtime Filter示例 Runtime Filter 从纸面意义来看&#xff0c;就是程序在运行时&#xff0c;根据实际的数据去进行一些过滤操作。这和静态的规则优化不同&#xff0c;静态优化不考虑实现的数据的分布。 示例 select a.* ,b.* a join b on a.idb.id假设一下数据…...

【工具变量】大数据管理机构改革DID(2007-2023年)

数据简介&#xff1a;数字ZF是指以新一代信息技术为支撑&#xff0c;重塑政务信息化管理架构、业务架构、技术架构的现代化治理模式。随着数字政府的建设&#xff0c;特别是借助大数据等新一代数字技术&#xff0c;极大地提升了政府的治理能力&#xff0c;从而起到辅助监管机构…...

Linux -- 初识信号

目录 什么是信号&#xff1f; 如何使用信号&#xff1f; 代码&#xff1a; testSig.cc makefile&#xff1a; 验证&#xff1a; 2号信号&#xff1a; 9号信号&#xff1a; 建立对信号的认识&#xff1a; 信号的处理 自定义信号的处理方式&#xff1a; signal 函数…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...