【发布时间】:2019-05-16 16:19:44
【问题描述】:
我有一组开始和停止索引,如下所示:
[[0, 3], [4, 7], [15, 18]]
我想构建一个 2D numpy 数组,其中每一行是对应的开始和停止索引对的范围,如下所示:
[[0, 1, 2],
[4, 5, 6],
[15, 16, 18]]
目前,我正在创建一个空数组并将其填充到 for 循环中:
ranges = numpy.empty((3, 3))
a = [[0, 3], [4, 7], [15, 18]]
for i, r in enumerate(a):
ranges[i] = numpy.arange(r[0], r[1])
有没有更紧凑和(更重要的是)更快的方法来做到这一点?可能不涉及使用循环的东西?
【问题讨论】:
-
随便
np.asarray(a)[:, :1] + np.arange(a[0][1] - a[0][0]) -
所有对的开始和停止之间的差异是否相同?
-
@Divakar,是的,它们是一样的