numpy.lib.stride_tricks.as_strided(x, shape=None, strides=None, subok=False, writeable=True)

参数:

  • x: 我们要分割的数组
  • shape: 返回结果的形状shape
  • strides: 在数组X的基础上按照给的的strides来切割出给定的shape数组

返回: 返回在X的基础上按照给的的 strides来切割出一个给定shape的新数组

X = [
[0,1,2],
[3,4,5],
[6,7,8]
]A = [[[[0,1],[3,4]],[[1,2],[4,5]]],[[[3,4],[6,7]],[[4,5],[7,8]]]]

如上:将矩阵X转换为包含4个小矩阵的A,矩阵X的shape为(3,3), 矩阵A的shape为(2,2,2,2)

A = as_strided(X, shape=(2,2,2,2), strides)

这时候设置的strides并不是结果A的strides(32,16,8,4), strides的理解是在矩阵X的基础上按照给的的strides,来切割出一个符合给定shape的新数组。

计算strides

  • 第3维度:A[i, j, k, x]到A[i, j, k, x+1]在X中跨过4byte
    例如:从A[0,0,0,0]的值0到A[0,0,0,1]的值1,在X中经过1个元素(4byte)
  • 第2维度:A[i, j, k, x]到A[i, j, k+1, x]在X中跨过12byte
    例如:从A[0,0,0,0]的值0到A[0,0,1,0]的值3,在X中经过3个元素(12byte)
  • 第1维度:A[i, j, k, x]到A[i, j+1, k, x]在X中跨过4byte
    例如:从A[0,0,0,0]的值0到A[0,1,0,0]的值1,在X中经过1个元素(4byte)
  • 第0维度:A[i, j, k, x]到A[i+1, j, k, x]在X中跨过12byte
    例如:从A[0,0,0,0]的值0到A[1,0,0,0]的值3,在X中经过3个元素(12byte)
  • 因此strides=(12,4,12,4)

运行代码

X = np.arange(9, dtype=np.int32).reshape(3,3)
print(X)
A = np.lib.stride_tricks.as_strided(X, shape=(2,2,2,2), strides=(12,4,12,4))
print(A)

运行结果

numpy.lib.stride_tricks.as_strided() 高效切分数组相关推荐

  1. scikit-image安装 from numpy.lib.arraypad import _validate_lengths ImportError: cannot import name ‘_va

    [写在前面]提示没有skimage.io 安装界面如下 [报错] from numpy.lib.arraypad import _validate_lengths ImportError: canno ...

  2. Python之数据分析(Numpy的使用、多维数组、数据类型)

    文章目录 写在前面 一.数据分析与Numpy 二.多维数组 三.Numpy的数据类型 写在前面 代码中的np表示的是numpy,因为导入的时候是:import numpy as np 一.数据分析与N ...

  3. [bug解决] cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad‘

    文章目录 问题描述: 原因分析: 解决方案: 方案1(不推荐): 方案2(推荐): 解决步骤: 可能遇到的报错 问题描述: skimage 报错 from skimage import io 报错信息 ...

  4. ImportError: cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad‘完美解决方法

    报错原因 numpy版本与skimage版本不匹配 解决方法 打开Anaconda3的arraycrop.py,该文件我是在这里的C:\ProgramData\Anaconda3\Lib\site-p ...

  5. lua中 高效判断数组(table)中是否存在某个字符 值

    lua中高效判断数组(table)中是否存在某个字符值 publish:June 28, 2016 -Tuesday by 04007 本站原创文章,转载请注明文章出处:www.04007.cn 在P ...

  6. 切分数组--荷兰国旗问题

    package org.buptdavid.datastructure.zj.zuo_shen;import java.util.Arrays;/*** @author root* @CalssNam ...

  7. 通过实现25个数组方法来理解及高效使用数组方法(长文,建议收藏)

    作者:Maciej Cieslar 译者:前端小智 来源: dev 你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub:https://github.com/qq449245884/ ...

  8. python中numpy中一维二维三维数组的意思

    python中numpy中一维二维三维数组的意思: 以下为一维二维三维数组图形化: 那么一维通俗点就是行(横着看)只有这个,别无二家. 二维通俗点就是行(横着看)+列(竖着看),只有这种形式. 三维比 ...

  9. python中import numpy_Python开发:NumPy学习(一)ndarray数组

    一.数据维度 一个数据表达一个含义,一组数据表达一个或多个含义. 数据维度概念:一组数据的组织形式,其中有一维数据.二维数据.多维数据.高维数据. 1. 一维数据 一维数据由对等关系的有序或无序数据构 ...

最新文章

  1. freertos 创建互斥量_STM32CubeMX+FreeRTOS学习[6] 互斥量(Lu)
  2. 【Flutter】Future 异步编程 ( 简介 | then 方法 | 异常捕获 | async、await 关键字 | whenComplete 方法 | timeout 方法 )
  3. vnc非授权访问漏洞
  4. 两天,我把分布式事务搞完了
  5. java时间往后一天_往后余生,不能再陪你了
  6. 密码学中的一些数学基础
  7. android的天气和时钟部件,时钟天气小部件
  8. AI之路最近的一些思考
  9. 安全面试之WEB安全(一)
  10. sci四区大水刊 计算机,sci四区大水刊_sci四区免费大水刊_sci四区什么水平
  11. android高仿微信表情输入与键盘输入详解-解决跳闪与表情切换问题
  12. 2015年读的10本英文书小结
  13. Optimizing radiotherapy plans for cancer treatment with Tensor Networks解读
  14. 关于MATLAB中clear的用法
  15. 【缓存】@Caching和@CacheConfig
  16. 【万人千题】结对编程排位赛(第一期) 第二周 排名公布,冠军成功卫冕,啊这……
  17. mysql报错3009_MySQL修改密码方法汇总
  18. Spring loosely coupled example
  19. 大理石分割(动态规划)
  20. 如何制作DOS启动盘

热门文章

  1. Python中join()方法和os.path.join()方法
  2. 【git学习一】git的原理
  3. JVM源码分析之javaagent原理完全解读--转
  4. kafka 集群--3个broker 3个zookeeper创建实战
  5. 李宏毅深度学习——逻辑回归
  6. 【风控场景】互利网上数字金融典型场景: 网络支付
  7. 这些deep learning(rnn、cnn)调参的经验值得分享
  8. 同班同学20年后 身家15亿与月薪5000元的区别
  9. 成为优秀高级程序员的10个要点
  10. Gartner预测2015年的十大IT战略发展趋势