Создание представления при индексировании массива numpy с диапазоном - PullRequest
1 голос
/ 28 января 2020

Я заметил, что, в отличие от slice, использование range для индексации массива не приводит к просмотру массива numpy.

import numpy as np

a = np.zeros((3, 3))

s = slice(1, 3)
b = a[1, s]
b[:] = 1
print(a)
# [[0. 0. 0.]
#  [0. 1. 1.]
#  [0. 0. 0.]]

r = range(1, 3)
b = a[1, r]
b[:] = 1
print(a)
# [[0. 0. 0.]
#  [0. 0. 0.]
#  [0. 0. 0.]]

Существуют ли быстрые / элегантные способы преобразования range в slice, кроме использования .start, .stop, .step вручную?

def range2slice(r):
    return slice(r.start, r.stop, r.step)

Или есть способ, которым я получить numpy, чтобы получить представление, даже если я использую range для индексации массива?

В основном я хочу объект, который я могу перебрать в AND, который создает представление при использовании в качестве индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...