【发布时间】:2016-08-02 09:17:51
【问题描述】:
我有一个numpy.array,叫grid,形状:
grid.shape = [N, M_1, M_2, ..., M_N]
N、M_1、M_2、...、M_N的值只有在初始化后才知道。
对于此示例,假设 N=3 且 M_1 = 20、M_2 = 17、M_3 = 9:
grid = np.arange(3*20*17*9).reshape(3, 20, 17, 9)
我正在尝试循环遍历这个数组,如下:
for indices, val in np.ndenumerate(grid[0]):
print indices
_some_func_with_N_arguments(*grid[:, indices])
在第一次迭代时,索引 = (0, 0, 0) 并且:
grid[:, indices] # array with shape 3,3,17,9
而我希望它是一个仅包含三个元素的数组,就像:
grid[:, indices[0], indices[1], indices[2]] # array([ 0, 3060, 6120])
但是我不能像上一行那样实现,因为我不知道先验indices 的长度是多少。
我使用的是 python 2.7,但欢迎使用与版本无关的实现 :-)
【问题讨论】:
标签: python arrays numpy indexing slice