Python:使用list来索引[from:to]任意numpy数组

时间:2017-12-18 14:34:56

标签: python numpy

我想将矩阵中的一个块复制到另一个矩阵中。 要在任何类型的n维数组中使用它,我需要通过[]运算符应用带偏移的列表。有没有办法做到这一点?

mat_bigger[0:5, 0:5, ..] = mat_smaller[2:7, 2:7, ..] 

像:

off_min = [0,0,0]
off_max = [2,2,2]
for i in range(len(off_min)):
  mat_bigger[off_min[i] : off_max[i], ..] = .. 

1 个答案:

答案 0 :(得分:2)

您可以通过创建slice个对象的元组来完成此操作。例如:

mat_big = np.zeros((4, 5, 6))
mat_small = np.random.rand(2, 2, 2)

off_min = [2, 3, 4]
off_max = [4, 5, 6]

slices = tuple(slice(start, end) for start, end in zip(off_min, off_max))

mat_big[slices] = mat_small