【发布时间】:2014-12-18 21:47:00
【问题描述】:
我有一个 3d numpy 数组,例如:
>>> A = np.arange(24).reshape(2,3,4)
我想根据轴 1 和轴 2 的一对坐标沿轴 0 拍摄一维切片:
>>> h = 1
>>> l = 2
>>> A[:,h,l]
array([ 6, 18])
到目前为止一切顺利。但是如果我的坐标对存储为一个元组或一个列表,而不是两个整数呢?我尝试了一些明显的选择,但无济于事:
>>> coords = (1,2)
>>> A[coords]
array([20, 21, 22, 23])
>>> A[:,coords]
array([[[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[16, 17, 18, 19],
[20, 21, 22, 23]]])
>>> A[...,coords]
array([[[ 1, 2],
[ 5, 6],
[ 9, 10]],
[[13, 14],
[17, 18],
[21, 22]]])
我已经用谷歌搜索了这个并没有找到任何东西,但我完全有可能没有使用适当的术语进行搜索。所以,如果这是一个过于简单的问题,请道歉!
【问题讨论】:
-
您需要将坐标解压缩到两个单独的数组中,最后两个轴各一个。例如。
h, l = coords。 (请注意,在这种情况下,coords可能是二维的。)还是我误解了这个问题?
标签: python arrays numpy indexing