Python ndarray.strides用法

article/2025/10/2 8:15:25

用法

ndarray.strides: 跨越数组各个维度所需要经过的字节数元组

a = np.array([[10,2,4],[3, 4,11]],dtype=np.int32)
print(a.strides) #(12,4)  12表示在内存中a[n, 0]到a[n+1, 0]跨过多少byte; 4表示在内存中a[n, 0]到a[n, 1]跨过多少byte#  查看数组a所有元素占用内存大小,单位byte
print(a.nbytes) # 24 
# 查看数组a每个元素占用内存大小,单位byte
print(a.itemsize) # 4print(a[:,1]) # [2 4]
print(a[:,1].strides) # (12,)
stride, = a[:,1].strides 
print(stride) # 12

数组a以24(6个值*4=24)个字节的形式存储在内存中,一个接一个(又称为连续内存块)。数组的步幅告诉我们要沿着某个轴移到下一个位置,我们必须在内存中跳过多少个字节。

解释:

基础:

  • 1byte = 8bit
  • 不同数据类型占据的内存大小不同,总的来说一个32位的类型需要4byte,64位的类型需要8byte,可参考下表
    | 数值 \ 数值类型 (单位:Byte) | int32 | int64 | float32 | float64 |
    |–|--|–|--|–|
    | [] | 96 | 96 | 96 | 96 |
    | 1 | 4 | 8 | 4 | 8 |
    表格意思:一个空的数组[]就占用内存96byte,因为它存放了关于数组大小等信息。32位的数组一个元素占用4byte,64的数组,一个元素占用8byte

计算规则:

  • 跨越第1维:从a[x,0]到a[x,1]经过4个字节(1个值)才能移至下一列
  • 跨越第0维:从a[0,x]到a[1,x]的话,需要经过12(3个值x4)个字节才能移至下一行中的相同位置,因为a[0],也就是a的一行有3个数据,占据12个字节
  • 因此数组a的步幅将为(12, 4)

示例

y = np.reshape(np.arange(2*3*4), (2,3,4))
print(y)
print(y.strides) # (48, 16, 4)

在这里插入图片描述


http://chatgpt.dhexx.cn/article/L9GF036E.shtml

相关文章

神经网络:CNN中的filter,kernel_size,strides,padding对输出形状的影响

输入数据在经过卷积层后,形状一般会发生改变,而形状的变化往往与以下四个超参数有关。 1,filter(out_channel) 该超参数控制着输入数据经过卷积层中需要与几个卷积核进行运算,而输入数据与每个卷积核进行…

tf.keras.layers.Conv2D用法总结

概述 tf.keras.layers.Conv2D()函数用于描述卷积层。 用法 tf.keras.layers.Conv2D(filters, kernel_size,strides(1, 1), paddingvalid, data_formatNone,dilation_rate(1, 1), activationNone )1.filter:卷积核的个数 2.kenel_size:卷积核尺寸&…

CNN中stride(步幅)和padding(填充)的详细理解

步幅:卷积核经过输入特征图的采样间隔 填充:在输入特征图的每一边添加一定数目的行列,使得输出的特征图的长、宽 输入的特征图的长、宽 两个参数的核心: 设置步幅的目的:希望减小输入参数的数目,减少计…

java输出(java输出语句快捷键)

java最简单的输入输出 java输出语句怎么写 去百度文库,查看完整内容> 内容来自用户:白岸海歌 System.out.print ——标准输出流 Java的流类,主要是:输入流类InputStream输出流类OutputStream Java系统预先定义好3个流对象,静态…

Java程序入口+输出语句+数据类型

一(Java程序入口):要想执行一个java程序,就必须有一个程序入口,且该入口为固定格式:public static void main(String[ ] args){}。注意:是main而不是mian,Str…

JAVA 循环控制语句以及输入输出

JAVA 循环控制语句以及输入输出 顺序结构分支结构if 语句switch 语句 循环结构while 循环for 循环do while 循环 输入输出输出到控制台从键盘输入 JAVA 里的程序控制语句主要分为顺序结构、分支结构(选择)和循环结构。 顺序结构 顺序结构比较简单&#x…

JAVA输出语句及变量

文章目录 语句输出在.java文件里一共能存在2样东西;注释的分类:变量标识符变量名的命名规范: 语句输出 格式一:println.带有换行效果 格式二:print.不带换行效果 (语句是程序执行的最小单元,是以";"结束的.) “ System.out.println();”输入快捷方法…

java的打印语句_java打印输出语句是什么?

打印输出语句有:换行打印“System.out.println();”,不换行打印“System.out.print();”,字节输出“System.out.write();”,按格式输出“System.out.printf();”。 Java中的输出语句有以下四种:System.out.println(111…

Java输入/输出

File类文本(Text)输入/输出 输出用PrintWriter类try-with-resources来自动关闭资源用Scanner来读取文本流式处理文本文件和二进制文件 二进制(Binary)文件输入/输出 二进制输入/输出到文件FilterInputStream/FilterOutputStream D…

Java输入输出

源代码见:点击打开链接 引言:在平时java开发中,被输入输出搞得头疼。特此写下这篇博客,一是为了总结输入输出,二是为了和大家分享。如果大家觉得写得好,就请高抬贵手点个赞呗!!&…

JAVA的输入输出

1.Java的输出 System,out,println(); //输出且换行 System.out.print(); //输出不换行 System.out.printf(); //提供字符格式化 示例 class Output{public static void main(String args[]){System.out.println("1.println");System.out.println("2.println&qu…

[JAVA]java中的打印输出语句

java中的打印语句分为三种: System.out.print(); System.out.println(); System.out.printf(); 1.System.out.print(); 打印在引号里的字符串 int x 5; System.out.print("今天是周" x); 打印结果: 2.System.out.println(); 和print…

java怎么完成输出语句

我们在前面的文章和案例中,其实早就知道Java是如何实现输出功能的了。没错,就是利用System.out.println()语句来实现的!接下来壹哥就给大家详细解读一下这个语句的作用及其含义。 1. System 我们先来看看System是个什么东东。 System是Jav…

Java的输出语句与注释

控制台输出语句 在Java中想要用控制台输出语句首先得先初步认识如下代码: 一,代码块System.out.print("输出内容");注意:Java严格区分大小写,大小写不能搞错。括号里要打引号。代码块结束之后加上; 二,方法…

Java中简单的输入输出语句

Java中简单的输入输出语句 一、输入语句 1.使用Scanner类 使用步骤: (1)导包 import java.util.Scanner; 这一步是必须要做的!!! (2)使用Scanner创建对象 Scanner scnew Scanner(System.in);//sc是你所创建的变量名&#…

Java016——Java输入输出语句

一、输出语句 Java常用的输出语句有三种: 1)System.out.println(); 换行输出,输出后会自动换行。 //示例 System.out.println("Hello"); System.out.println("World");//输出 Hello World2)System.out.pri…

【单元测试】Junit 4(七)--junit4 TestRunnner

Test Runners 我没想到一个特别合适的词来形容Test Runners的作用,所以多说几句: Test Runners 是具有特殊功能的执行测试用例的通道,也可以理解为测试的执行者,例如可以同时运行多个测试用例,也可以具有这个测试执行…

浅谈单元测试 Junit4

JUint是Java编程语言的单元测试框架,用于编写和运行可重复的自动化测试。本文主要针对Junit4要点进行梳理总结。 一、浅谈单元测试 1.1 什么是单元测试 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于…

JUnit4高级篇-由浅入深

JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。 先简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也就是说,这个东西在…

Junit4Junit5对比

Junit是Java编程语言的单元测试框架&#xff0c;用来编写单元测试代码。随着Junit5的盛行&#xff0c;与Junit4有何差异。 JDK支持 Junit4需要Java5版本 Junit5需要Java8版本 Maven依赖 Junit4不区分模块&#xff0c;只有一个jar&#xff1a; <dependency><groupId>…