Нарезка 2d массива из значений в 1d массиве и далее - PullRequest
0 голосов
/ 19 апреля 2019

Наличие произвольного двумерного массива, скажем, нулей и массива индексов:

z = np.zeros((5,5))
ix = np.array([1,4,2,3,0])

Как я могу добавить 1 из столбцов, указанных 1d-массивом, для получения:

array([[0, 1, 1, 1, 1],
       [0, 0, 0, 0, 1],
       [0, 0, 1, 1, 1],
       [0, 0, 0, 1, 1],
       [1, 1, 1, 1, 1]])

Мне не удалось найти простой способ сделать это, используя numpy.

1 Ответ

1 голос
/ 19 апреля 2019

Один путь будет -

In [50]: ncols = 5

In [51]: (ix[:,None] <= np.arange(ncols)).view('i1')
Out[51]: 
array([[0, 1, 1, 1, 1],
       [0, 0, 0, 0, 1],
       [0, 0, 1, 1, 1],
       [0, 0, 0, 1, 1],
       [1, 1, 1, 1, 1]], dtype=int8)

Если вам нужно добавить в существующий массив z -

z += (ix[:,None] <= np.arange(ncols))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...