Python 具有负索引的numpy数组索引
首先,我将标量时间序列存储在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])
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构造用于内联使用它