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数组感到困惑相关推荐

  1. python 写txt 换行_python 批配换行Numpy数组的保存与读取方法

    1. 数组以二进制格式保存 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例 np.save(&quo ...

  2. python数组初始化_Python科学计算库Numpy数组的初始化和基本操作

    umPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵 ...

  3. python 数组维度_python – 非常基本的Numpy数组维度可视化

    NumPy中ndarray的解剖结构如下所示:(来源: Physics Dept, Cornell Uni) 一旦离开2D空间并进入3D或更高维空间,行和列的概念就不再有意义了.但是你仍然可以直观地理 ...

  4. Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组、split函数垂直拆分二维numpy数组

    Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组.split函数垂直拆分二维numpy数组 目录

  5. Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组、split函数水平(按列)拆分二维numpy数组

    Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组.split函数水平(按列)拆分二维numpy数组 目 ...

  6. python二维数组求和_Python如何对二维数组求和

    Python对二维数组求和的方法:首先定义好一个二维数组:然后使用map函数对数组里每一个元素进行sum操作即可对二维数组求和. 关于二维数组求和的几种方法: a = [[1,2],[3,4],[5, ...

  7. python取数组的一列,numpy取数组前几列 怎样取numpy数组指定行列

    python中如何提取一组数据中的第一列数据 概述直接提取会报错,把array数组转换成list,即可提取,使用numpy转换 步骤详解生活本来就是一场恶战,给止疼药也好,给巴掌也罢,最终都是要单枪匹 ...

  8. python np dot函数_python科学计算之Numpy

    Numpy的组成与功能 Numpy(Numeric Python)可以被理解为一个用python实现的科学计算包,包括: 1.强大的N维数组对象Array: 2.成熟的函数库: 3.实用的线性代数.傅 ...

  9. python支持按指定字符串分割成数组_python – 如何切割numpy数组字符串的每个元素?...

    这是一个矢量化的方法 – def slicer_vectorized(a,start,end): b = a.view('S1').reshape(len(a),-1)[:,start:end] re ...

最新文章

  1. C语言输入一行整数(OJ输入格式)
  2. java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇
  3. PHP中单引号和双引号的区别
  4. C++中嵌入ie浏览器总结 .
  5. linux删除最后一个字符串,Bash删除字符串中的第一个和最后一个字符
  6. 计算机中管理方法科学化的重要性,浅论档案科学化管理的重要性
  7. 解决Mono for android的xml编辑器无法代码完成的问题
  8. java hive查询_java程序调用hive查询的一个异常
  9. [团队项目3.0]Scrum团队成立
  10. Android音频开发(六)音频编解码之初识MediaCodec上
  11. 并发编程之ReentrantLock
  12. matlab虚拟现实之V-Realm Builder2使用NavigationInfo精确定位、建模
  13. xcode快捷键(二)
  14. 管理新语:说说工作的主动权
  15. 《Redis开发与运维》读书笔记三
  16. 问题 C: [入门OJ]和||
  17. Word中快速输入公式
  18. 今秋如何让自己的C币也来个大丰收
  19. 深度学习中的感受野计算
  20. 记录各大牛个人主页,紧密跟踪其学术动态

热门文章

  1. 高校复试计算机英语文献翻译,专业文献英语翻译复试.pdf
  2. .bat文件(%~dp0)和call、echo批处理环境变量
  3. matplotlib多个饼状图
  4. 大神开车的标题-python中类方法、类实例方法、静态方法的使用与区别
  5. [HNOI2019]JOJO
  6. 构造函数(constructor)与原型链(prototype)关系
  7. Nginx服务系列——缓存
  8. 快应用quickapp快速入门教程 by五个半柠檬2
  9. Raft只读操作实现要点
  10. 安卓 AsyncHttpClient - “Content-Type not allowed!”