AndiMandi
@AndiMandi
Вроде юн, а уже на заводе :)

Как заменить максимальный элемент в матрице на 0?

Нужно создать матрицы из случайных чисел 5x3 и 3x2, произвести сложение всех элементов внутри каждого из матриц, заменить максимальный элемент в каждом массиве на «0». Программа работает через раз, не особо понимаю почему (было бы замечательно, если бы мне это разъяснили):
def js():
    Z = np.random.random((5,3))
    Y = np.random.random((3,2))
    Z[Z.argmax()] = 0
    Y[Y.argmax()] = 0
    Z = sum(Z)
    Y = sum(Y)
    print(Z, Y)
  • Вопрос задан
  • 791 просмотр
Решения вопроса 1
@dmshar
Вы перед тем как писать вопрос хотя-бы один раз перечитайте, что вы пишете и попытайтесь понять, что-же вы написали.

1. "произвести сложение элементов этих массивов" Какое "сложение" ? Двух массивов между собой? Всех элементов внутри каждого из массивов? Элементов обоих массивов?
Попробуйте свою мысль выразить четко.
2. заменить максимальный элемент на «0» Максимальный элемент в массиве? В обоих массивов? Или - если это выражение трактовать как продолжение предыдущего - то максимальный из двух сумм?
3. Но с последним у меня явно проблемы - вы хотите сказать, что с "первым" у вас проблем нет?
Z = np.random.random((5,3))
Y = np.random.random((3,2))
Z[Z.argmax()] = 0
Y[Y.argmax()] = 0
Traceback (most recent call last):
  File "<ipython-input-2-4e17f53e0d83>", line 4, in <module>
    Y[Y.argmax()] = 0
IndexError: index 4 is out of bounds for axis 0 with size 3

Попробуйте все-таки внятно объяснить, что вам нужно.

P.S. После попытки автора вопроса его переформулировать, стало немного яснее, хотя и не на 100%. Если я правильно понял, то вашИ задачИ решаЮтся вот так:

Z = np.random.random((5,3))
Y = np.random.random((3,2))
sZ=Z.sum()
sY=Y.sum()
print(sZ, sY)
Z[np.unravel_index(np.argmax(Z), Z.shape)]=0
Y[np.unravel_index(np.argmax(Y), Y.shape)]=0


И работает "всегда", а не "через раз", и результат вроде тот, что вы хотели
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AndiMandi
@AndiMandi Автор вопроса
Вроде юн, а уже на заводе :)
dmshar, я скорректировал вопрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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