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

numpy ascontiguousarra 学习笔记

目录

numpy ascontiguousarra函数

转换命令:

ascontiguousarray等价效果:

ascontiguousarray学习笔记


ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组,使得运行速度更快。

在昇腾开发版上使用时,因为内存不连续导致预测结果错误。

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print(a.flags) # c_contiguous为True,数组a为C连续性b = np.ascontiguousarray(a)
print(b)
print(b.flags) # c_contiguous为True,数组b为C连续性c = np.ascontiguousarray(a, dtype=np.float32)
print(c)
print(c.flags) # c_contiguous为True,数组c为C连续性且元素类型变为np.float32

转换命令:

 atc --model=plate.onnx --framework=5 --output=plate_rec_color_bs1 --input_format=NCHW --input_shape="images:1,3,48,168" --log=info --soc_version=Ascend310P3

img = np.ascontiguousarray(img)

ascontiguousarray等价效果:

img3.tofile("temp.bin")
img4 = np.fromfile("temp.bin", dtype=np.float32)  # 从bin文件中读取图片

ascontiguousarray学习笔记

1、ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组,使得运行速度更快。

比如我们生成一个二维数组,Numpy可以通过.flags熟悉查看一个数组是C连续还是Fortran连续的

import numpy as np
arr = np.arange(12).reshape(3,4)
flags = arr.flags
print("",arr)
print(flags)

output:

 [[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]C_CONTIGUOUS : TrueF_CONTIGUOUS : FalseOWNDATA : FalseWRITEABLE : TrueALIGNED : TrueWRITEBACKIFCOPY : FalseUPDATEIFCOPY : False

我们可以看到 C_CONTIGUOUS : True,就说明是行连续,F_CONTIGUOUS : False则代表列不连续。同理如果我们进行arr.T  或者arr.transpose(1,0)则是列连续,行不连续。

import numpy as np
arr = np.arange(12).reshape(3,4)
arr1 = arr.transpose(1,0)
flags = arr1.flags
print("",arr1)
print(flags)

output:

 [[ 0  4  8][ 1  5  9][ 2  6 10][ 3  7 11]]C_CONTIGUOUS : FalseF_CONTIGUOUS : TrueOWNDATA : FalseWRITEABLE : TrueALIGNED : TrueWRITEBACKIFCOPY : FalseUPDATEIFCOPY : False

如果进行在上的slice即进行切割,则会改变连续性,成为既不C连续,也不Fortran连续的:

import numpy as np
arr = np.arange(12).reshape(3,4)
arr1 = arr[:,0:2]
flags = arr1.flags
print("",arr1)
print(flags)

output:

 [[0 1][4 5][8 9]]C_CONTIGUOUS : FalseF_CONTIGUOUS : FalseOWNDATA : FalseWRITEABLE : TrueALIGNED : TrueWRITEBACKIFCOPY : FalseUPDATEIFCOPY : False

此时利用ascontiguousarray函数,可以将其变为连续的:

import numpy as np
arr = np.arange(12).reshape(3,4)
arr1 = arr[:,0:2]
arr2 = np.ascontiguousarray(arr1)
flags = arr2.flags
print("",arr2)
print(flags)

output:

[[0 1][4 5][8 9]]C_CONTIGUOUS : TrueF_CONTIGUOUS : FalseOWNDATA : TrueWRITEABLE : TrueALIGNED : TrueWRITEBACKIFCOPY : FalseUPDATEIFCOPY : False

C_CONTIGUOUS : True

C_CONTIGUOUS:真

http://www.lryc.cn/news/115157.html

相关文章:

  • 【算法|双指针系列No.1】leetcode283. 移动零
  • PHP8定义字符串的方法-PHP8知识详解
  • 分享21年电赛F题-智能送药小车-做题记录以及经验分享
  • 字符串统计-C语言/Java
  • Styled-components,另一种css in js的方案
  • nginx部署以及反向代理多域名实现HTTPS访问
  • 24届近5年东华大学自动化考研院校分析
  • nacos伪集群启动成功,但是服务注册不上的问题
  • tidevice+appium在windows系统实施iOS自动化
  • 面试热题(LRU缓存)
  • 微信小程序开发【从0到1~入门篇】2023.08
  • P1398 [NOI2013] 书法家
  • 【构建卷积神经网络】
  • SSH 认证原理
  • 基于DETR (DEtection TRansformer)开发构建MSTAR雷达影像目标检测系统
  • Java分布式微服务1——注册中心(Eureka/Nacos)
  • (文章复现)建筑集成光储系统规划运行综合优化方法matlab代码
  • 【Redis】——RDB快照
  • 微服务监控技术skywalking的部署与使用(亲测无坑)
  • DLA 神经网络的极限训练方法:gradient checkpointing
  • python excel 操作
  • 记一次Linux启动Mysql异常解决
  • ATFX汇市:美联储年内或仍将加息依次,美指向下空间不大
  • 【博客687】k8s informer的list-watch机制剖析
  • 用Python获取链家二手房房源数据,做可视化图分析数据
  • Yield Guild Games:社区更新 — 2023 年第二季度
  • Stable Diffusion - 运动服 (Gymwear Leggings) 风格服装与背景的 LoRA 配置
  • js-7:javascript原型、原型链及其特点
  • 无涯教程-Perl - continue 语句函数
  • 【贪心算法】leetcode刷题