来自变量的 Numpy 切片

Posted

技术标签:

【中文标题】来自变量的 Numpy 切片【英文标题】:Numpy slicing from variable 【发布时间】:2012-09-18 23:16:35 【问题描述】:

我正在尝试使用在变量中预定义的切片来切片 numpy 数组。这有效:

b = fromfunction(lambda x,y: 10*x+y, (5,4),dtype=int) # Just some matrix

b[1:3,1:3]
# Output:
# array([[11, 12],
#       [21, 22]])

但我想做的是这样的:

slice = "1:3,1:3"
b[slice]
# Output:
# array([[11, 12],
#       [21, 22]])

切片变量的类型对我来说并不重要,我只是以字符串为例。如何保存这样的切片说明符?

【问题讨论】:

【参考方案1】:

可以使用内置的slice函数

s = slice(1,3)
b[s,s]

ds = (s,s)
b[ds]

【讨论】:

【参考方案2】:

numpy.s_ and numpy.index_exp 提供了一种方便的方法:

the_slice = numpy.index_exp[1:3, 1:3]
b[the_slice]

它们不能做任何你不能用 slice、元组、NoneEllipsis 的组合做的事情,但它们允许你使用与切片完全相同的语法一个数组(s_index_exp 之间的唯一区别是对于一维切片,s_ 返回一个切片对象,而index_exp 将其包装在一个元组中)。

【讨论】:

以上是关于来自变量的 Numpy 切片的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中处理非常大的 netCDF 文件

python数据分析 python numpy--数组--运算,切片和索引

在 python 多处理中传递共享内存变量

对张量流变量的切片分配

使用切片!在变量上正在修改填充变量的节点属性

无法理解 for 循环的变量切片