Создать параметр для многомерной оценки в Python / Numpy - PullRequest
0 голосов
/ 27 октября 2018

У меня есть функциональная оценка, которая имеет много параметров, и я хочу векторизовать оценку.Примерно так:

  I = 100
  J = 34
  K = 6
  i, j, k = array(range(I)), array(range(J)), array(range(K))
  i, j, k = meshgrid(i, j, k)

  f = myfun(i, j, k)

Это отлично, однако, теперь у меня есть параметр, который я хочу отправить в myfun, который я генерирую с помощью другой функции и который инвариантен по отношению к некоторым из приведенных выше индексов,таким образом:

  p = my_param_gen()

и, скажем,

  p.shape()

будет выводить

  (100, 6)

Это будет соответствовать инвариантности p к индексу J. Теперь я быхотелось бы расширить форму p до

  (100, 34, 6)

в виде сетки, чтобы новое измерение заполнялось постоянными старыми измерениями.Как мне сделать это лучше всего?Подход должен работать также с добавлением многих новых измерений.Я видел numpy.expand_dims, но он этого не делает.

1 Ответ

0 голосов
/ 27 октября 2018

Ваш

In [116]: i.shape
Out[116]: (34, 100, 6)

Если p.shape равно (100,6), то p будет транслироваться с i,j,k без дальнейшего изменения. То есть p[None,:,:] расширение является автоматическим.

Если бы вы использовали i, j, k = np.meshgrid(i, j, k, indexing='ij'),

In [121]: i.shape
Out[121]: (100, 34, 6)

И p[:,None,:] потребуется для вещания (эквивалентно np.expand_dims(p,1))

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