在numpy中生成缩小范围的1d数组

时间:2014-05-08 14:40:36

标签: python numpy pandas

我想像numpy一样生成一维数组:

In [181]: np.concatenate((np.arange(1, 4), np.arange(2, 4), np.arange(3, 4)))
Out[181]: array([1, 2, 3, 2, 3, 3])

在更大范围内,以伪代码:

concatenate(1:n, 2:n, 3:n, ..., n:n)

是否有在numpy和/或pandas中执行此操作的矢量化方法?

2 个答案:

答案 0 :(得分:5)

>>> np.triu_indices(4, 1)[1]
array([1, 2, 3, 2, 3, 3])

(正如@SaulloCastro指出的那样,我没有像我在原始的,接受的答案中那样使用各种索引到网格网魔法。)

答案 1 :(得分:0)

我不知道以矢量化的方式做到这一点,但你总是可以用这样的方式生成它:

def createSweetRange(n):
    for i in xrange(1, n):
        for j in xrange(i, n):
            yield j