python将一个数组纵向切割_python – 对如何切割numpy数组感到困惑
m是一个有形状的ndarray(12,21,21),现在我只想把它的一个稀疏切片组成一个新的2D数组,
sliceid = 0
indx = np.array([0, 2, 4, 6, 8, 10])
所以sparse_slice直观地说是
sparse_slice = m[sliceid, indx, indx]
但显然上面的操作不起作用,目前我正在使用的是
sparse_slice = m[sliceid,indx,:][:, indx]
为什么第一个“直观”的方式不起作用?并且有一种比我目前的解决方案更紧凑的方式吗?我之前所有的ndarray切片试验都是基于直觉,也许我现在转而阅读一些严肃的手册……
解决方法:
更紧凑的方法是做new = m [0,:12:2,:12:2].这就是numpy docs所谓的“基本索引”,意味着你用整数或切片对象切片(即0:12:2).当您使用基本索引时,numpy返回原始数组的视图.例如:
In [3]: a = np.zeros((2, 3, 4))
In [4]: b = a[0, 1, ::2]
In [5]: b
Out[5]: array([ 0., 0.])
In [6]: b[:] = 7
In [7]: a
Out[7]:
array([[[ 0., 0., 0., 0.],
[ 7., 0., 7., 0.],
[ 0., 0., 0., 0.]],
[[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]]])
在您的“直观”方法中,您正在做的是使用另一个数组索引数组.当您使用另一个数组索引numpy数组时,数组需要具有相同的大小(或者它们需要相互广播,在一秒内更多关于此).在文档中,这称为花式索引或高级索引.例如:
In [10]: a = np.arange(9).reshape(3,3)
In [11]: a
Out[11]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [12]: index = np.array([0,1,2])
In [13]: b = a[index, index]
In [14]: b
Out[14]: array([0, 4, 8])
你看到我得到[0,0],[1,1]和[2,2]而不是[0,0],[0,1] …如果你想要“外部产品“索引索引可以执行以下操作.
In [22]: index1 = np.array([[0,0],[1,1]])
In [23]: index2 = np.array([[0,1],[0,1]])
In [24]: b = a[index1, index2]
In [25]: b
Out[25]:
array([[0, 1],
[3, 4]])
上面有一个简写,如下所示:
In [28]: index = np.array([0,1])
In [29]: index1, index2 = np.ix_(index, index)
In [31]: index1
Out[31]:
array([[0],
[1]])
In [32]: index2
Out[32]: array([[0, 1]])
In [33]: a[index1, index2]
Out[33]:
array([[0, 1],
[3, 4]])
In [34]: a[np.ix_(index, index)]
Out[34]:
array([[0, 1],
[3, 4]])
你会注意到index1是(2,1),index2是(1,2),而不是(2,2).这是因为两个阵列相互广播,你可以有关广播here的信息.请记住,当你使用花哨的索引时,你得到原始数据的副本而不是视图.有时这更好(如果你想保持原始数据不变),有时它只需要更多的内存.有关索引here的更多信息.
标签:python,numpy
来源: https://codeday.me/bug/20190613/1234414.html
python将一个数组纵向切割_python – 对如何切割numpy数组感到困惑相关推荐
- python 写txt 换行_python 批配换行Numpy数组的保存与读取方法
1. 数组以二进制格式保存 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例 np.save(&quo ...
- python数组初始化_Python科学计算库Numpy数组的初始化和基本操作
umPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵 ...
- python 数组维度_python – 非常基本的Numpy数组维度可视化
NumPy中ndarray的解剖结构如下所示:(来源: Physics Dept, Cornell Uni) 一旦离开2D空间并进入3D或更高维空间,行和列的概念就不再有意义了.但是你仍然可以直观地理 ...
- Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组、split函数垂直拆分二维numpy数组
Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组.split函数垂直拆分二维numpy数组 目录
- Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组、split函数水平(按列)拆分二维numpy数组
Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组.split函数水平(按列)拆分二维numpy数组 目 ...
- python二维数组求和_Python如何对二维数组求和
Python对二维数组求和的方法:首先定义好一个二维数组:然后使用map函数对数组里每一个元素进行sum操作即可对二维数组求和. 关于二维数组求和的几种方法: a = [[1,2],[3,4],[5, ...
- python取数组的一列,numpy取数组前几列 怎样取numpy数组指定行列
python中如何提取一组数据中的第一列数据 概述直接提取会报错,把array数组转换成list,即可提取,使用numpy转换 步骤详解生活本来就是一场恶战,给止疼药也好,给巴掌也罢,最终都是要单枪匹 ...
- python np dot函数_python科学计算之Numpy
Numpy的组成与功能 Numpy(Numeric Python)可以被理解为一个用python实现的科学计算包,包括: 1.强大的N维数组对象Array: 2.成熟的函数库: 3.实用的线性代数.傅 ...
- python支持按指定字符串分割成数组_python – 如何切割numpy数组字符串的每个元素?...
这是一个矢量化的方法 – def slicer_vectorized(a,start,end): b = a.view('S1').reshape(len(a),-1)[:,start:end] re ...
最新文章
- C语言输入一行整数(OJ输入格式)
- java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇
- PHP中单引号和双引号的区别
- C++中嵌入ie浏览器总结 .
- linux删除最后一个字符串,Bash删除字符串中的第一个和最后一个字符
- 计算机中管理方法科学化的重要性,浅论档案科学化管理的重要性
- 解决Mono for android的xml编辑器无法代码完成的问题
- java hive查询_java程序调用hive查询的一个异常
- [团队项目3.0]Scrum团队成立
- Android音频开发(六)音频编解码之初识MediaCodec上
- 并发编程之ReentrantLock
- matlab虚拟现实之V-Realm Builder2使用NavigationInfo精确定位、建模
- xcode快捷键(二)
- 管理新语:说说工作的主动权
- 《Redis开发与运维》读书笔记三
- 问题 C: [入门OJ]和||
- Word中快速输入公式
- 今秋如何让自己的C币也来个大丰收
- 深度学习中的感受野计算
- 记录各大牛个人主页,紧密跟踪其学术动态
热门文章
- 高校复试计算机英语文献翻译,专业文献英语翻译复试.pdf
- .bat文件(%~dp0)和call、echo批处理环境变量
- matplotlib多个饼状图
- 大神开车的标题-python中类方法、类实例方法、静态方法的使用与区别
- [HNOI2019]JOJO
- 构造函数(constructor)与原型链(prototype)关系
- Nginx服务系列——缓存
- 快应用quickapp快速入门教程 by五个半柠檬2
- Raft只读操作实现要点
- 安卓 AsyncHttpClient - “Content-Type not allowed!”