首页 > 解决方案 > 定期切片 2D numpy 数组

问题描述

我有一个 300x300 的 numpy 数组,我想定期保留所有元素。具体来说,对于两个轴,我想保留前 5 个元素,然后丢弃 15、保留 5、丢弃 15 等。这应该会产生一个 75x75 元素的数组。如何才能做到这一点?

标签: pythonarraysnumpyslice

解决方案


您可以创建一个执行保留/丢弃功能的一维蒙版,然后重复蒙版并将蒙版应用于数组。这是一个例子。

import numpy as np

size = 300
array = np.arange(size).reshape((size, 1)) * np.arange(size).reshape((1, size))

mask = np.concatenate((np.ones(5), np.zeros(15))).astype(bool)
period = len(mask)

mask = np.repeat(mask.reshape((1, period)), repeats=size // period, axis=0)
mask = np.concatenate(mask, axis=0)

result = array[mask][:, mask]

print(result.shape)

推荐阅读