Python 按元素编号范围定义的步骤对 2D 数组求和

标签 python arrays indexing 2d

import Numpy as np

a = np.array([[5, 1, 8, 1, 6, 1, 3, 2],[2, 3, 4, 1, 6, 1, 4, 2]])
n = 2
[(a[0:2, i:i+n]).sum(axis=1) for i in range(0,a.shape[1],n)]

输出为:

[array([6, 5]), array([9, 5]), array([7, 7]), array([5, 6])]

如何获得 2D 数组而不是上面输出中得到的 4 个数组...是否有更好更优雅的方法使用 reshape 来实现此目的?

最佳答案

您可以使用sliding_window_view :

import numpy as np
from numpy.lib.stride_tricks import sliding_window_view

a = np.array([[5, 1, 8, 1, 6, 1, 3, 2], [2, 3, 4, 1, 6, 1, 4, 2]])
n = 2

out = sliding_window_view(a, (n, n)).sum(axis=n+1)[:, ::n].squeeze()

输出:

array([[6, 5],
       [9, 5],
       [7, 7],
       [5, 6]])

关于Python 按元素编号范围定义的步骤对 2D 数组求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75114420/

相关文章:

java - 如何在java中解码数组中的十六进制代码

javascript - 将元素移动到右侧 Javascript

java - 如何获取 2D 数组 Java 中项目的索引

python - Julia 将分区数据框存储到字典中

python - Coldfusion 是否支持动态参数?

python - 如何新建文件夹?

ios - 如何快速将数组映射到字典中的键?

python - 索引多维数组

oracle - 索引组织表在这里合适吗?

Python Pandas,创建指定列 dtypes 的空 DataFrame