Многомерная сетка для общего числа измерений - PullRequest
0 голосов
/ 06 ноября 2018

Мне нужно создать сетку для массива с общим / переменным числом измерений. Я знаю, что в 2D-случае я могу использовать mgrid :

# Some 2D data
N = 1000
x = np.random.uniform(0., 1., N)
y = np.random.uniform(10., 100., N)
xmin, xmax, ymin, ymax = x.min(), x.max(), y.min(), y.max()

# Obtain 2D grid
xy_grid = np.mgrid[xmin:xmax:10j, ymin:ymax:10j]

Как я могу масштабировать этот подход, когда число измерений является переменным? Т.е. мои данные могут быть (x, y) или (x, y, z) или (x, y, z, q) и т. Д.

Наивный подход:

# Md_data.shape = (M, N), for M dimensions
dmin, dmax = np.amin(Md_data, axis=1), np.amax(Md_data, axis=1)
Md_grid = np.mgrid[dmin:dmax:10j]

не работает.

1 Ответ

0 голосов
/ 06 ноября 2018

Мы могли бы использовать просмотр списка по списку переменных: x,y,z,q,etc., чтобы создать нотацию среза, а затем просто передать ее в mgrid -

L = [x,y,z,q] # list of variables
out = np.mgrid[[np.s_[A.min():A.max():10j] for A in L]]

С конструктором slice:

np.mgrid[[slice(A.min(),A.max(),10j) for A in L]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...