Размерность результата индексации ndarray со срезом в диапазоне

Вы можете сделать это, используя Array#reduce :

filters.reduce((r, i) => {
  r[i.filterName] = i.filterValue;
  return r;
}, {});

Идея состоит в том, чтобы перебрать объект filters и на каждой итерации назначить ключ- значение к результату.

1
задан fountainhead 21 January 2019 в 20:32
поделиться

2 ответа

Ваши выражения среза и диапазона также могут быть записаны как:

In [86]: nd15[2:3, 2:3]
Out[86]: array([['e22']], dtype='<U3')
In [87]: nd15[2:3, [2]]
Out[87]: array([['e22']], dtype='<U3')
In [88]: nd15[[2],2:3]
Out[88]: array([['e22']], dtype='<U3')
In [89]: nd15[[2],[2]]
Out[89]: array(['e22'], dtype='<U3')

nd15[2,2] будет скалярным элементом 'e22'.

Но различия могут быть более ясными, если мы расширим срезы, чтобы получить массив (2,2):

In [97]: nd15[1:3, 2:4]
Out[97]: 
array([['e12', 'e13'],
       ['e22', 'e23']], dtype='<U3')
In [98]: nd15[1:3,[2,3]]
Out[98]: 
array([['e12', 'e13'],
       ['e22', 'e23']], dtype='<U3')
In [99]: nd15[[1,2], 2:4]
Out[99]: 
array([['e12', 'e13'],
       ['e22', 'e23']], dtype='<U3')
In [100]: nd15[[1,2], [2,3]]
Out[100]: array(['e12', 'e23'], dtype='<U3')

Последний - диагональ, (1,2) и (2, 3) элементы.

Out[86] и Out[97] - views, остальные - копии.

0
ответ дан hpaulj 21 January 2019 в 20:32
поделиться

Вы запускаете два различных типа расширенной индексации , не осознавая этого из-за неявного преобразования range в ndarray.

Если у вас есть range или list (или любой другой действительно повторяемый) в обоих индексах, вы запускаете индексацию целочисленного массива . В этой схеме результат будет иметь ту же форму, что и переданные индексные массивы. В данном случае это одномерный массив, потому что в него преобразуются диапазоны.

Когда один индекс является итеративным, а другой - слайсом, вы запускаете форму гибридной индексации . В этом случае форма имеет комбинацию размеров из расширенного индекса (1) и среза (1). Если бы вы указали вложенный 2D-список вместо range для расширенного индекса, вы бы получили 3D-вывод.

0
ответ дан Mad Physicist 21 January 2019 в 20:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: