numpy.lib.stride_tricks.as_strided() 高效切分数组
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() 高效切分数组相关推荐
- 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 ...
- Python之数据分析(Numpy的使用、多维数组、数据类型)
文章目录 写在前面 一.数据分析与Numpy 二.多维数组 三.Numpy的数据类型 写在前面 代码中的np表示的是numpy,因为导入的时候是:import numpy as np 一.数据分析与N ...
- [bug解决] cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad‘
文章目录 问题描述: 原因分析: 解决方案: 方案1(不推荐): 方案2(推荐): 解决步骤: 可能遇到的报错 问题描述: skimage 报错 from skimage import io 报错信息 ...
- ImportError: cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad‘完美解决方法
报错原因 numpy版本与skimage版本不匹配 解决方法 打开Anaconda3的arraycrop.py,该文件我是在这里的C:\ProgramData\Anaconda3\Lib\site-p ...
- lua中 高效判断数组(table)中是否存在某个字符 值
lua中高效判断数组(table)中是否存在某个字符值 publish:June 28, 2016 -Tuesday by 04007 本站原创文章,转载请注明文章出处:www.04007.cn 在P ...
- 切分数组--荷兰国旗问题
package org.buptdavid.datastructure.zj.zuo_shen;import java.util.Arrays;/*** @author root* @CalssNam ...
- 通过实现25个数组方法来理解及高效使用数组方法(长文,建议收藏)
作者:Maciej Cieslar 译者:前端小智 来源: dev 你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub:https://github.com/qq449245884/ ...
- python中numpy中一维二维三维数组的意思
python中numpy中一维二维三维数组的意思: 以下为一维二维三维数组图形化: 那么一维通俗点就是行(横着看)只有这个,别无二家. 二维通俗点就是行(横着看)+列(竖着看),只有这种形式. 三维比 ...
- python中import numpy_Python开发:NumPy学习(一)ndarray数组
一.数据维度 一个数据表达一个含义,一组数据表达一个或多个含义. 数据维度概念:一组数据的组织形式,其中有一维数据.二维数据.多维数据.高维数据. 1. 一维数据 一维数据由对等关系的有序或无序数据构 ...
最新文章
- freertos 创建互斥量_STM32CubeMX+FreeRTOS学习[6] 互斥量(Lu)
- 【Flutter】Future 异步编程 ( 简介 | then 方法 | 异常捕获 | async、await 关键字 | whenComplete 方法 | timeout 方法 )
- vnc非授权访问漏洞
- 两天,我把分布式事务搞完了
- java时间往后一天_往后余生,不能再陪你了
- 密码学中的一些数学基础
- android的天气和时钟部件,时钟天气小部件
- AI之路最近的一些思考
- 安全面试之WEB安全(一)
- sci四区大水刊 计算机,sci四区大水刊_sci四区免费大水刊_sci四区什么水平
- android高仿微信表情输入与键盘输入详解-解决跳闪与表情切换问题
- 2015年读的10本英文书小结
- Optimizing radiotherapy plans for cancer treatment with Tensor Networks解读
- 关于MATLAB中clear的用法
- 【缓存】@Caching和@CacheConfig
- 【万人千题】结对编程排位赛(第一期) 第二周 排名公布,冠军成功卫冕,啊这……
- mysql报错3009_MySQL修改密码方法汇总
- Spring loosely coupled example
- 大理石分割(动态规划)
- 如何制作DOS启动盘