numpy数组的多个索引:IndexError:无法将类型为numpy.ndarray的切片条目强制转换为整数

时间:2016-10-31 15:35:00

标签: python numpy matrix-indexing numpy-broadcasting

有没有办法在numpy数组中进行多次索引,如下所述?

arr=np.array([55, 2, 3, 4, 5, 6, 7, 8, 9])
arr[np.arange(0,2):np.arange(5,7)]

output:
IndexError: too many indices for array

Desired output:
array([55,2,3,4,5],[2,3,4,5,6])

此问题可能类似于计算数组上的移动平均值(但我想在没有提供任何功能的情况下执行此操作)。

1 个答案:

答案 0 :(得分:1)

这是一种使用strides -

的方法
start_index = np.arange(0,2)
L = 5     # Interval length
n = arr.strides[0]
strided = np.lib.stride_tricks.as_strided
out = strided(arr[start_index[0]:],shape=(len(start_index),L),strides=(n,n))

示例运行 -

In [976]: arr
Out[976]: array([55, 52, 13, 64, 25, 76, 47, 18, 69, 88])

In [977]: start_index
Out[977]: array([2, 3, 4])

In [978]: L = 5

In [979]: out
Out[979]: 
array([[13, 64, 25, 76, 47],
       [64, 25, 76, 47, 18],
       [25, 76, 47, 18, 69]])