如何在NumPy中直接生成由连续数对组成的二维数组
实现方式
有两种更简洁的内置方案可以直接生成目标数组:
- 高版本NumPy推荐方案(v1.20.0及以上)
用内置的滑动窗口视图函数sliding_window_view,一行代码就能实现,而且返回的是原数组的视图,没有额外内存开销:
import numpy as np arr = np.lib.stride_tricks.sliding_window_view(np.arange(1, 11), window_shape=2)
直接输出就是你要的结构:
array([[ 1, 2], [ 2, 3], [ 3, 4], [ 4, 5], [ 5, 6], [ 6, 7], [ 7, 8], [ 8, 9], [ 9, 10]])
- 兼容旧版本的广播方案
如果你的NumPy版本低于1.20.0,用广播机制也可以一行实现,不需要单独生成两个数组再拼接:
import numpy as np arr = np.arange(1, 10)[:, np.newaxis] + [0, 1]
原理是先把[1,2,...,9]转成9行1列的二维数组,和长度为2的行向量相加时自动触发广播,每一行都会依次加0和1,直接得到目标结构。
内容的提问来源于stack exchange,提问作者Abbas
相关产品推荐
相关产品推荐

