Есть ли способ сделать множественную индексацию в массиве 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])
Эта проблема может быть похожа на вычисление скользящего среднего по массиву (но я хочу сделать это без какой-либо предоставленной функции).
np.vstack((arr[np.arange(0, 6)], arr[np.arange(1, 7)]))
? - person mgilson   schedule 31.10.2016np.arange(0,2)
относится к желаемому результату? - person njzk2   schedule 31.10.20165
, будет одинаковым для всех интервалов? - person Divakar   schedule 31.10.2016[ 3, 4, 5, 6, 7]
вместо этого? - person Divakar   schedule 31.10.2016vstack
также дает желаемый результат с обновленнымarr
... - person mgilson   schedule 31.10.2016np.vstack((arr[:6], arr[1:7]))
легче набирать, легче понимать и, вероятно, более производительно. - person mgilson   schedule 31.10.2016np.arange(0,2) Out[41]: array([0, 1])
- person Nickpick   schedule 31.10.2016np.vstack([arr[slice(start, stop)] for start, stop in zip(np.arange(0, 2), np.arange(5, 7))])
- person mgilson   schedule 31.10.2016