1 条题解
-
0
NUMPY071 题解:计算邻居数量
题目
计算二维数组每个位置的邻居数量。
解题思路
- 读取矩阵
- 使用 8 个方向的切片计算邻居
- 对于边界点,邻居数量会少一些
代码
import numpy as np n = int(input()) Z = np.array([list(map(int, input().split())) for _ in range(n)]) N = np.zeros(Z.shape, dtype=int) N[1:-1,1:-1] = (Z[0:-2,0:-2] + Z[0:-2,1:-1] + Z[0:-2,2:] + Z[1:-1,0:-2] + Z[1:-1,2:] + Z[2:,0:-2] + Z[2:,1:-1] + Z[2:,2:]) print(N)代码详解
8 个方向的切片:
- 左上:
- 正上:
- 右上:
- 左:
- 右:
- 左下:
- 正下:
- 右下:
运行示例
输入:
3 1 1 1 1 1 1 1 1 1分析:
- 角点有 3 个邻居
- 边中点有 5 个邻居
- 中心点有 8 个邻居
输出:
[[3 5 3] [5 8 5] [3 5 3]]核心知识点
- 数组切片
- 向量化计算
- 边界处理
- 1
信息
- ID
- 378
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者