Python:提取2D numpy数组的核心

2024-10-03 11:25:25 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这样一个2D numpy数组:

In[1]: x
Out[1]:
array([[0, 0, 0, 0, 0],
       [1, 1, 1, 1, 1],
       [2, 2, 2, 2, 2],
       [3, 3, 3, 3, 3],
       [4, 4, 4, 4, 4],
       [5, 5, 5, 5, 5]], dtype=int64)

我想提取(n-1)*(m-1)核心,它是:

array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4]], dtype=int64)

既然数据结构不是平坦的,我怎么做呢?你建议先把它弄平吗?你知道吗

这是一个更大数组的简化版本,它的核心是维(n-33)*(n-33)。你知道吗


Tags: in版本numpy数据结构核心数组outarray
1条回答
网友
1楼 · 发布于 2024-10-03 11:25:25

可以使用负停止索引排除最后x行/列和正常开始索引:

>>> x[1:-1, 1:-1]
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]], dtype=int64)

对于您的新示例:

>>> t = np.array([[0, 0, 0, 0, 0],
                  [1, 1, 1, 1, 1],
                  [2, 2, 2, 2, 2],
                  [3, 3, 3, 3, 3],
                  [4, 4, 4, 4, 4],
                  [5, 5, 5, 5, 5]], dtype=np.int64)
>>> t[1:-1, 1:-1]
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4]], dtype=int64)

您还可以删除两个前导列和尾随列:

>>> t[1:-1, 2:-2]
array([[1],
       [2],
       [3],
       [4]], dtype=int64)

或行:

>>> t[2:-2, 1:-1]
array([[2, 2, 2],
       [3, 3, 3]], dtype=int64)

相关问题 更多 >