Мне было интересно, существует ли достаточно эффективный способ выборки из двумерного массива.Если у меня есть универсальный массив:
dims = (4,4)
test_array = np.arange(np.prod(dims)).reshape(*dims)
test_array
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
Тогда я бы хотел произвольно установить, скажем, два элемента из него в конкретное значение (скажем, 100).Я попытался создать индексный массив и затем применить это:
sample_from = np.random.randint(low=0, high=5, size=(2,2))
sample_from
array([[0, 2],
[1, 1]])
Но если я попытаюсь использовать это для индексации, это даст мне немного неожиданный ответ:
test_array[sample_from]
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[ 4, 5, 6, 7]]])
Что яя бы ожидал (и такой результат, который мне нужен), если бы я только что вошел в индексный массив напрямую:
test_array[[0,2],[1,1]] = 100
test_array
, что дает:
array([[ 0, 100, 2, 3],
[ 4, 5, 6, 7],
[ 8, 100, 10, 11],
[ 12, 13, 14, 15]])
Любая помощь, с благодарностью полученная.