Index entire array backwards in for loop

前端 未结 2 1017
时光取名叫无心
时光取名叫无心 2021-01-18 19:58

Suppose I would like to loop over an array and within the loop index the array forward and backward for all of its indices like so:

x = np.random.uniform(siz         


        
相关标签:
2条回答
  • 2021-01-18 20:13

    Why don't you just use the length information:

    length = len(x)
    
    for i in range(length):
        dot = np.dot(x[:length-i], x[i:])
    
    0 讨论(0)
  • 2021-01-18 20:15

    Use an end of slice value of -i or None. If i is non-zero, then it's just -i, but if it's 0, then -0 is falsy, and it evaluates and returns the second term, None, which means "run to end of sequence". This works because foo[:None] is equivalent to foo[:], when you omit that component of the slice it becomes None implicitly, but it's perfectly legal to pass None explicitly, with the same effect.

    So your new line would be:

    dot = np.dot(x[:-i or None], x[i:])
    
    0 讨论(0)
提交回复
热议问题