Проблема смещения 3D-массива с помощью numpy.roll () - PullRequest
0 голосов
/ 17 февраля 2019

У меня проблема при смещении 3D-массива с помощью функции NumPy roll.Мой массив имеет размерность u ((3, nx, ny, nz)).

Проблема в том, что нп.Функция Roll не работает так, как она предполагает.Обычно в функции крена: axis = 0 определяет смещение строк, а axis = 1 определяет смещение столбцов.Но тогда как в моем случае те же явления не работают.

Когда я пытаюсь сместить массив по строкам, используя axis = 0, массив вообще не смещается, вместо этого, если я использую axis = 1, массив смещается (axis = 1 стал строкойСдвиг), что странно.В то же время, если я пытаюсь сместить массив по столбцам, ни ось = 0, ни ось = 1 не работают.

Таким образом, для этого типа размерного массива U ((3, nx, ny, nz)) происходит только смещение строк.Ниже приведен простой пример, который я пробовал со случайными числами.

from numpy import *
import numpy as np
from math import *

u = zeros((2,3,4,4))              # Array initialized

print(u)
print('x---------------------------x')

u[0,:,0,:] = 3                     # Array with random values
u[0,:,2,1] = 9
u[0,:,1,2] = 5
u[0,:,3,3] = 7

u[1,:,:,0] = 1   
u[1,:,2,2] = 6 
u[1,:,1,3] = 7   
u[1,:,3,2] = 8

print(u)

print('x---------------------------x')

########################## Roll operations ##########################

u_sh = np.roll(u[0,:,:,:], 1, axis = 0)

print(u_sh)
print('x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x')

u_sh = np.roll(u[0,:,:,:], 1, axis = 1)  # axis = 1 has become row shifting.

print(u_sh)
print('x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x')

u_sh = np.roll(u[1,:,:,:], 1, axis = 0)

print(u_sh)
print('x*******************************x')

u_sh = np.roll(u[1,:,:,:], 1, axis = 1)  #Neither axis is shifting a column

print(u_sh)

Ни ось = 0, ни ось = 1 не смещают столбец

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