Выберите ось для назначения в массив NumPy программно - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть трехмерный массив NumPy.

Я могу изменить произвольный элемент, используя простое индексирование

D[:,:,0]=myval
D[:,:10,1]=list(range(10))

Иногда мне нужно изменить элемент (ы) по заданному индексу, а это не такзаранее определено, к какой оси относится индекс.Я хотел бы поймать два следующих случая с изменением переменной

D[:,:10,1]=list(range(10)) ->axis 1
D[:10,:,1]=list(range(10)) ->axis 0

Что-то вроде:

f(D,axis=0/1,index=1,newval)

1 Ответ

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

Я бы использовал индексный кортеж с объектами срезов, подготовленными вспомогательным объектом np.s_. Если axis равен 0 или 1, то последующее действие присваивает list(range(10)) либо D[:10, :, 1], либо D[:, :10, 1].

idx = [np.s_[:], np.s_[:], 1] 
idx[axis] = np.s_[:10]
D[tuple(idx)] = list(range(10))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...