python - 每两个交替元素的 Numpy 切片二维数组

标签 python numpy

是否有一种优雅的方法来对 numpy 数组进行切片,以便提取每隔一个元素(按行交替)? (假设宽度和高度是2的倍数)

示例提取模式:

[[ X, - , X , -],
 [ -, X , - , X],
 [ X, - , X , -],
 [ -, X , - , X],
 ...]]

其中 X 表示提取此元素,而 - 则不提取。

结果将是原始数组宽度的一半或高度的一半。

最佳答案

无法通过步幅来做到这一点,因为您无法使用简单的函数来处理这些元素。

使用例如花哨的索引面具是最好的选择。这看起来相当优雅:

>>> arr = np.random.random_integers(0,9, (4,4))
>>> mask = np.fromfunction(lambda i, j: (i+j)%2 ==0 , arr.shape, dtype=int)
>>> np.ma.masked_array(arr, mask=~mask)
masked_array(data =
 [[0 -- 1 --]
 [-- 7 -- 6]
 [9 -- 9 --]
 [-- 1 -- 3]],
             mask =
 [[False  True False  True]
 [ True False  True False]
 [False  True False  True]
 [ True False  True False]],
       fill_value = 999999)

最后一行仅用于演示目的。如果要提取数据,请使用索引:arr[mask],后面可以选择reshape(arr.shape[0]//2, -1)如果你需要它以二维形式返回。当数组的宽度和高度不是 2 的倍数时,此方法也适用。

关于python - 每两个交替元素的 Numpy 切片二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37853559/

相关文章:

Python Pandas - 年度数据的每周折线图

python - 如何防止反编译或检查 python 代码?

python - 如何在PIL python中获取已旋转角度的文本的x,y坐标?

python - Scikit-learn KDTree query_radius 同时返回 count 和 ind?

python - 特殊方法的 Python 文档在哪里? (__init__, __new__, __len__, ...)

python - PIL 图像未按正确顺序渲染输入的像素值

python - numpy.where 是否总是按升序输出索引?

python - 将字符串列表转换为 numpy 列表列表

python - 为什么我的 SGD 与我的线性回归模型相去甚远?

python - 在 Django 中使用过滤器获取最新记录