【发布时间】:2014-04-27 12:17:53
【问题描述】:
有没有不使用 [slice, slice] 语法的情况下使用 Numpy 的多维数组切片的方法?
我需要能够从正常的函数调用中使用它,但我还没有找到使用切片对象的方法。
我不能对我的程序使用语法[(slice,slice)],因为[] 是常规函数调用之外的特殊语法。
我使用的语言是 Hy,一种 Python 的 Lisp,它不支持这种语法。更重要的是,它不应该支持这种语法。然而,如果不使用 [] 语法,Numpy 似乎不支持多维切片。
让我感到困惑的是,Numpy 源代码中 C 和 Python 的混合使得很难辨别 [slice,slice] 是如何实现的。
甚至可能无法绕过这种语法。
编辑:
@Joe Kington 在下面提供的答案允许您像这样对 Numpy 矩阵进行切片:
x = np.array([list(range(5)) for x in list(range(5))])
x.getitem(slice(1,4))
array([[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]])
x.getitem(tuple([slice(1,4),slice(1,4)]))
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
【问题讨论】:
-
能否请您澄清一下您想要达到的目标,到目前为止您已经尝试过的内容以及它究竟是如何失败的?什么是异常函数调用?
-
[bla, blah]只是[(blah, blah)]我敢打赌关于这个有很多问题...... -
我已编辑问题以进一步澄清。如果仍不清楚,请告诉我。
-
这个问题可能更适合 numpy github,但我很惊讶以前没有遇到过这个问题,并认为最好在像 stackoverflow 这样的更公开的论坛中完成,以防万一将来有人需要澄清
-
听起来您想要
arr.__getitem__(tuple_of_slice_objects)和__setitem__进行分配。 (顺便说一句,您的修改有助于使问题更加清晰。我认为这是一个很好的问题。)
标签: python arrays numpy multidimensional-array