NumPy 数组属性

1.NumPy 数组的基本属性

    NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。NumPy中,每个线性的数组称为轴(axis),维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所一维数组就是 NumPy 的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。轴的数量—秩,就是数组的维数。很多时候可以声明 axis。axis=0,表示沿着第 0 轴进行操作,对每列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。

2.ndarray 对象属性

(1)ndarray.ndim:数组的秩(rank),数组的维度数量或轴的数量。

(2)ndarray.shape:数组的维度,表示数组在每个轴的大小。对于二维数组(矩阵),表示其行数和列数。

(3)ndarray.size:数组中元素的总个数,等于 ndarray.shape 各个轴上大小的乘积。

(4)ndarray.dtype:数组中元素的数据类型。

(5)ndarray.itemsize:数组中每个元素的大小,以字节为单位。

(6)ndarray.flags:包含有关内存布局的信息,如是否为 C 或 Fortran 连续存储,是否为只读等。

(7)ndarray.real:数组中每个元素的实部(如果元素类型为复数)。

(8)ndarray.imag   :数组中每个元素的虚部(若元素类型为复数)。

(9)ndarray.data:实际存储数组元素缓冲区,一般通过索引访问元素,不直接使用该属性。

3.ndarray.ndim 用于获取数组的维度数量(数组轴数)

import numpy as npa = np.arange(24) 
print (a.ndim)             # a 现只有一个维度
# 现在调整其大小
b = a.reshape(2,4,3)  # b 现在拥有三个维度
print (b.ndim)

(1)创建一维数组:a = np.arange(24) 创建一个一维数组 a,包含 0 到 23 的整数,总共有 24 个元素。np.arange(24) 生成一个范围从 0 到 23 的数组。print(a.ndim) 输出 a 的维度数,因为 a 是一维数组,所以输出 1。

(2)调整数组形状:b = a.reshape(2, 4, 3) 将 a 重新调整为一个 2x4x3 的三维数组 b。reshape(2, 4, 3) 指定了新形状的大小:2 表示第一个维度的大小,4 表示第二个维度的大小,3 表示第三个维度的大小。这样可以确保 b 仍然包含 24 个元素(2 * 4 * 3 = 24)。print(b.ndim) 输出 b 的维度数,因为 b 是三维数组,所以输出 3。

4.ndarray.shape显示数组形状

ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。比如,一个二维数组,维度表示"行数"和"列数"。

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

(1)创建二维数组:a = np.array([[1, 2, 3], [4, 5, 6]]) 数组包含两个子列表,分别为 [1, 2, 3] 和 [4, 5, 6],因此数组 a结构是 2 x 3。数组 a 有 2 行和 3 列。

(2)输出数组形状:print(a.shape) 输出数组 a形状,结果为 (2, 3)。2 表示数组行数(2 行),3 表示数组列数(每行3 个元素)。

5.使用 shape 属性重新调整数组的形状

import numpy as npa = np.array([[1,2,3],[4,5,6]])
a.shape =  (3,2) 
print (a)

(1)创建二维数组:a = np.array([[1, 2, 3], [4, 5, 6]]) 创建二维数组 a,初始形状为 (2, 3),即 2 行 3 列。

(2)调整数组形状:a.shape = (3, 2) 将数组 a 的形状更改为 (3, 2),3 行 2 列。在 numpy 中,直接修改 shape 属性可以重新排列数组的形状,只要元素总数不变(这里数组总共有 6 个元素,可以转换为 (3, 2) 的形状)。

(3)输出调整后数组:print(a) 输出调整后数组 a显示新形状内容。

6.使用reshape函数调整数组大小

import numpy as npa = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2) 
print (b)

(1)创建二维数组:a = np.array([[1, 2, 3], [4, 5, 6]]) 创建二维数组 a,初始形状为 (2, 3),即 2 行 3 列。

(2)调整数组形状:b = a.reshape(3, 2) 将数组 a 重新调整为 3 行 2 列的形状。reshape(3, 2) 指定新形状为 (3, 2),即 3 行 2 列。调整后的数组 b 会有同样的 6 个元素(因为原数组 a 有 6 个元素),但以 3 行 2 列的方式排列。

(3)输出调整后数组:print(b) 输出调整后数组 b显示新形状内容。

7.ndarray.itemsize 以字节形式返回数组每个元素大小

import numpy as np# 数组的 dtype 为 int8(一个字节) 
x = np.array([1,2,3,4,5], dtype = np.int8) 
print (x.itemsize)# 数组的 dtype 现在为 float64(八个字节)
y = np.array([1,2,3,4,5], dtype = np.float64) 
print (y.itemsize)

(1)创建 int8 类型数组:x = np.array([1, 2, 3, 4, 5], dtype=np.int8) 创建数组 x,数据类型为 int8。int8 是8 位的数类型,占用 1 个字节的内存。print(x.itemsize) 输出 x 中每个元素的字节大小,由于 x 的数据类型是 int8,因此输出结果为 1。

(2)创建 float64 类型数组:y = np.array([1, 2, 3, 4, 5], dtype=np.float64) 创建了一个数组 y,数据类型为 float64。float64 是64 位的浮点数类型,占用 8 个字节内存。print(y.itemsize) 输出 y 每个元素的字节大小,y 的数据类型是 float64,输出结果为 8。

8.ndarray.flags 返回 ndarray 对象的内存信息

(1)C_CONTIGUOUS (C):数据在单一的C风格的连续段中

(2)F_CONTIGUOUS (F):数据在单一的Fortran风格的连续段中

(3)OWNDATA (O):数组拥有它所使用的内存或从对象中借用它

(4)WRITEABLE (W):数据区域可以被写入,将该值设置为 False,则数据为只读

(5)ALIGNED (A):数据和所有元素都适当地对齐到硬件

(6)UPDATEIFCOPY (U):其它数组的副本,当这个数组被释放时,原数组的内容将被更新

import numpy as npx = np.array([1,2,3,4,5]) 
print (x.flags)

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Spring源码(十二):Spring MVC之Spring Boot

本篇将详细讨论Spring Boot 的启动/加载、处理请求的具体流程。我们先从一个简单的Spring Boot项目日志开始分析(这里假设读者已经仔细阅读完了前面的文章,且对Spring源码有一定深度的了解,否则会看得一脸懵逼)。 本文为2024重置…

游戏引擎学习第四天

视频参考:https://www.bilibili.com/video/BV1aDmqYnEnc/ BitBlt 是 Windows GDI(图形设备接口)中的一个函数,用于在设备上下文(device context, DC)之间复制位图数据。BitBlt 的主要用途是将一个图像区域从一个地方复…

双指针算法的妙用:提高代码效率的秘密(2)

双指针算法的妙用:提高代码效率的秘密(2) 前言: 小编在前几日讲述了有关双指针算法两道题目的讲解,今天小编继续进行有关双指针算法习题的讲解,老规矩,今天还是两道题目的讲解,希望…

[CKS] K8S NetworkPolicy Set Up

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于不安全项目修复的题目。 What’s the NetworkPolicy 关于network policy的介绍可以查看: https://kubernetes.io/docs/concepts/services-networking/network-policies/ Question 1 …

python全栈开发《62.获取两个集合的并集》

目录 1.什么是并集2.union的功能3.union的用法4.代码 1.什么是并集 集合a:1,2,3,4 集合b:3,4,5,6 a和b一共拥有的不重复的元素有1,2,3,4&#xff…

DICOM图像知识:DICOM图像排序与坐标系解析

目录 引言 1. 概述 2. DICOM图像排序规则 2.1 Patient的Study按Study Date排序 2.2 Study的Series按Series Number排序 2.3 Series的SOP按Instance Number或Slice Location排序 2.3.1 Instance Number排序 2.3.2 Slice Location排序 2.3.3 使用Image Position (Patien…

B-Spline(B样条)插值

B-Spline(B样条)详细介绍 B-Spline(B样条)是一种常用于计算机图形学和数据拟合的数学方法。它由一系列控制点和节点(Knots)以及一组基函数(Basis Functions)组成。B-Spline 能够通过…

HarmonyOS Next 并发 taskpool 和 worker

HarmonyOS Next 并发 taskpool 和 worker 总览 介绍 并发,指的是同一时间内,多段代码同时执行。在ArkTs编程中,并发分为异步并发和多线程并发。 异步并发 异步并发并不是真正的并发,比如在单核设备中,同时执行多端…

4.3软件设计:面对对象的设计

面对对象设计 1、面对对象的架构设计1.1 第一步:构造系统的物理模型1.2 第二步:设计子系统划分各个子系统的方式定义子系统之间的关系定义子系统的接口 1.3 第三步:非功能需求设计 2、面对对象的用例设计与类设计2.1 类2.2 类间关系2.3 细化用…

华为OD机试 - 求小球落地5次后所经历的路程和第5次反弹的高度 (Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题 点这里。 实战项目访问:http://javapub.net.cn/ 专栏导读 本专栏收录于 《华为OD机试(JAVA)真题(E卷D卷A卷B卷C卷)》 。 刷的越多,抽中的概率越大&…

VBA08-if语句

一、单行 If 语句 If x > 10 Then MsgBox "x is greater than 10"二、多行 If...Then...End If 语句 If x > 10 ThenMsgBox "x is greater than 10"y x 5 End If 三、If...Then...Else 语句 If condition Then 当条件为真时执行的代码块stateme…

JS 函数的基本知识

目录 1. 介绍函数 2. 使用函数 3. 函数传参 3.1 传递默认值 3.2 传递数组 3.3 传递变量 4. 函数返回值 5. 匿名函数 6. 立即执行函数 7. 注意 1. 介绍函数 在学习 CSS 样式过程中,经常有如下操作: 2. 使用函数 函数声明: 函数命名规…

澳鹏通过高质量数据支持 Onfido 优化AI反欺诈功能

“Appen 在 Onfido 的发展中发挥了至关重要的作用,并已成为我们运营的重要组成部分。我们很高兴在 Appen 找到了可靠的合作伙伴。” – Onfido 数据和分析总监 Francois Jehl 简介:利用人工智能和机器学习增强欺诈检测 在当今日益数字化的世界&#xff…

【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解

目录 一、前言 二、Spring AI概述 2.1 spring ai是什么 2.2 Spring AI 核心能力 2.3 Spring AI 应用场景 三、Spring AI Alibaba 介绍 3.1 Spring AI Alibaba 是什么 3.2 Spring AI Alibaba 核心特点 3.3 Spring AI Alibaba 应用场景 四、SpringBoot 对接Spring AI Al…

小白学习之路:咖啡叶锈病分割

咖啡叶锈病分割系统源码&数据集分享 [yolov8-seg-C2f-Faster-EMA&yolov8-seg-SPPF-LSKA等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Globa…

RabbitMQ设置TTL(消息过期)时间(重要)

RabbitMQ设置消息过期时间 1、过期消息(死信)2、设置消息过期的两种方式2.1、设置单条消息的过期时间2.1.1、配置文件application.yml2.1.2、配置类RabbitConfig2.1.3、发送消息业务类service(核心代码)2.1.4、启动类2.1.5、依赖文…

让你的网站与众不同:6款独特播放器设计

文章目录 前言正文1.可拖动播放列表2.强调无障碍设计3.材质设计风格音频播放器4.旋转的黑胶唱片设计5.流畅且响应迅速6.带悬停标签的控制按钮 总结 前言 随着HTML5的普及,网站轻松添加音视频内容变得简单,但默认播放器功能有限,无法满足个性…

ImportError: cannot import name ‘packaging‘ from ‘pkg_resources‘ 的参考解决方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境: Ubuntu20.04 ROS-Noetic 一、问题描述 自己在通过 pip install 安装module时 (使用的是 pip install mmcv)遇到如下问题: ImportError: cannot …

AI, Machine Learning, Deep Learning 和 Generative AI

人工智能的采用开始得相当缓慢,大多数人甚至不知道它的存在,即使知道,也似乎还需要 5 到 10 年的时间,但后来机器学习、深度学习等东西出现了,我们开始看到一些应用,然后基础模型出现了。 AI 人工智能&am…

C# 一个工具类让winform自动根据窗体大小自适应缩放所有控件

AutoControlSize.cs工具类,功能是使控件尺寸随着主对话框尺寸按比例调整。并且使用方式十分简单,只需要调用两个函数即可实现整个页面的控件根据窗体的大小改变而跟着缩放。 1、使用效果如下: 未缩放前的原始窗体页面 缩放后的窗体页面&…