Python 具有负索引的numpy数组索引

Python 具有负索引的numpy数组索引,python,numpy,Python,Numpy,首先,我将标量时间序列存储在numpy数组中: ts = np.arange(10) 那是 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 假设我想从ts中提取一系列向量2,1,0,3,2,1,4,3,2等,我可以想到以下代码来实现这一点: for i in range(len(ts)-2): print(ts[2+i:i-1:-1]) 但是,当i=0时,上面的代码返回一个空数组而不是[2,1,0],因为循环体将变为 print(ts[2:-1:-1])

首先,我将标量时间序列存储在numpy数组中:

ts = np.arange(10)
那是

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
假设我想从ts中提取一系列向量2,1,0,3,2,1,4,3,2等,我可以想到以下代码来实现这一点:

for i in range(len(ts)-2):
    print(ts[2+i:i-1:-1])
但是,当i=0时,上面的代码返回一个空数组而不是[2,1,0],因为循环体将变为

print(ts[2:-1:-1])
其中中间的1是造成麻烦的。

我的问题是:有没有办法使[2,1,0]的索引工作正常?

您无需使用:

您无需使用:

这也应该起作用:

print(ts[i:i+3][::-1])
这也应该起作用:

print(ts[i:i+3][::-1])

另一种方法是执行以下操作

slices = np.arange(3)

result = np.array([])
while slices[2] < len(ts):
    # print(ts[slices])
    result = np.r_[result , ts[slices]]
    slices += 1

result.reshape((-1 , 3))
Out[165]:
array([[ 0.,  1.,  2.],
       [ 1.,  2.,  3.],
       [ 2.,  3.,  4.],
       [ 3.,  4.,  5.],
       [ 4.,  5.,  6.],
       [ 5.,  6.,  7.],
       [ 6.,  7.,  8.],
       [ 7.,  8.,  9.]])

另一种方法是执行以下操作

slices = np.arange(3)

result = np.array([])
while slices[2] < len(ts):
    # print(ts[slices])
    result = np.r_[result , ts[slices]]
    slices += 1

result.reshape((-1 , 3))
Out[165]:
array([[ 0.,  1.,  2.],
       [ 1.,  2.,  3.],
       [ 2.,  3.,  4.],
       [ 3.,  4.,  5.],
       [ 4.,  5.,  6.],
       [ 5.,  6.,  7.],
       [ 6.,  7.,  8.],
       [ 7.,  8.,  9.]])

美好的我不知道我可以放一个if…else,它与问题没有直接关系,这在Cythonwdg中不起作用,if-else构造是为了在内部使用它!我不知道我可以放一个if…else,它与问题没有直接关系,这在Cythonwdg中不起作用,if-else构造用于内联使用它