2024-04-26 06:45:48 发布
网友
最简单/最优雅的方法是什么来创建一个整数序列,以便在numpy中省略每个n元素k数字?你知道吗
序列很大,我想尽量避免循环。你知道吗
例如:
n = 4 k = 2 desired output = {0,1,2,3,6,7,8,9,12,13,14,15,...}
seq = numpy.arange((n+k)*10).reshape(-1,n+k)[:,:n].flatten()
根据需要创建尽可能多的基本n范围序列的重复,按适当的数量进行偏移,展平并丢弃额外的项目:
n
def skip_range(n, k, length): N = (length - 1) // n + 1 # rounded up integer division out = np.empty((N, n), dtype=np.intp) out[:] = np.arange(0, N*(n+k), n+k)[:, None] out += np.arange(n) out.shape = (-1,) out.resize(length) return out >>> skip_range(4, 2, 7) array([0, 1, 2, 3, 6, 7, 8]) >>> skip_range(4, 2, 8) array([0, 1, 2, 3, 6, 7, 8, 9]) >>> skip_range(4, 2, 9) array([ 0, 1, 2, 3, 6, 7, 8, 9, 12])
根据需要创建尽可能多的基本
n
范围序列的重复,按适当的数量进行偏移,展平并丢弃额外的项目:相关问题 更多 >
编程相关推荐