Установите значения массива numpy после определенного индекса на 0, используя другой массив ⇐ Python

Программы на Python
Anonymous
Установите значения массива numpy после определенного индекса на 0, используя другой массив

Сообщение Anonymous »

У меня есть два массива: один из чисел с плавающей точкой и один из целых чисел

Код: Выделить всё

arr1 = np.asarray([[1.5, 0.75, 0.2],
[0.3, 1.8, 4.2]])
arr2 = np.asarray([2, 1])
Мне нужно изменить arr1 таким образом, чтобы

Код: Выделить всё

arr1 [0, arr2[0]:] = 0
arr1 [1, arr2[1]:] = 0
получение

Код: Выделить всё

array([[1.5 , 0.75, 0.  ],
[0.3 , 0.  , 0.  ]])
т.е. n-й элемент arr2 определяет количество ненулевых элементов в строке n arr1.
Как я могу векторизовать это для больших массивов и распространить это на дополнительные измерения? Скажи

Код: Выделить всё

rng = np.random.default_rng()
arr1 = rng.uniform(size=(100, 10, 1000))
arr2 = rng.integers(10, size=(100, 1000))
как я могу изменить arr1 (или создать новый arr3 в зависимости от реализации), чтобы каждый срез arr1[:, :, i], arr2[:, i] соответствовал приведенному выше?< /p>
Окончательная реализация будет порядка 100 000 x 100 x 10 000

Подробнее здесь: https://stackoverflow.com/questions/790 ... ther-array

Вернуться в «Python»