Соответствующие приложения для функции as_stridedPython

Программы на Python
Anonymous
Соответствующие приложения для функции as_strided

Сообщение Anonymous »

Я практикуюсь в том, как использовать функцию as_strided в numpy. Я начал со следующего собственного примера, где я генерирую 5 изображений размером 3 x 3, где каждое изображение заполнено единицами, следующее - двойками и так далее до 5. Если я хочу преобразовать (5,3,3) Volume, чтобы поместить все изображения в одну строку, я могу сделать следующее, и это сработает:

Код: Выделить всё

import numpy as np
from numpy.lib.stride_tricks import as_strided

array_3d = np.empty((5, 3, 3))

for i in range(5):
array_3d[i] = np.full((3, 3), i+1)

print(array_3d.itemsize)

array_2d = as_strided(array_3d, shape=(5, 9), strides=(8*9, 8))

print(array_2d)
Это выведет следующее:

Код: Выделить всё

8
[[1. 1. 1. 1. 1. 1. 1. 1. 1.]
[2. 2. 2. 2. 2. 2. 2. 2. 2.]
[3. 3. 3. 3. 3. 3. 3. 3. 3.]
[4. 4. 4. 4. 4. 4. 4. 4. 4.]
[5. 5. 5. 5. 5. 5. 5. 5. 5.]]
Теперь я хотел попробовать более сложный пример размещения изображений (3, 3) рядом следующим образом с использованием функции as_strided:

Код: Выделить всё

[[1. 1. 1. 2. 2. 2. 3. 3. 3. 4. 4. 4. 5. 5. 5.]
[1. 1. 1. 2. 2. 2. 3. 3. 3. 4. 4. 4. 5. 5. 5.]
[1. 1. 1. 2. 2. 2. 3. 3. 3. 4. 4. 4. 5. 5. 5.]]
Однако я не могу придумать, как сделать это, просто используя функцию as_strided. Поэтому мне интересно, невозможно ли это только с помощью функции as_strided, и как я могу узнать, когда уместно использовать функцию as_strided отдельно от операций скользящего окна.

Подробнее здесь: https://stackoverflow.com/questions/786 ... d-function

Вернуться в «Python»