Как я могу установить определенное значение в массиве (матрице) логических значений для True/False без использования циклов в Python?

Я пытаюсь создать две случайно сгенерированные матрицы mat1 и mat2 со случайными целочисленными значениями от 0 до 255 и проверить, какие ячейки равны.

и я знаю это много

import numpy as np

mat1 = np.random.randint(0, 255, size=(1000,1000))
mat2 = np.random.randint(0, 255, size=(1000,1000))
mat_compare = (mat1 == mat2)

Я хотел знать, как присвоить ячейкам True целочисленное значение 255, а ячейкам False0 в другом ценном типе массива. Я много пробовал, но он обнаружил только 255 и 0 как логические значения:

mat_compare[(mat1 == mat2)] = 255
mat_compare[(mat1 != mat2)] = 0

print(mat_compare)

и результаты оказались такими:

[[False False False ... False False False]
 [False False False ... False False False]
 [False False False ... False False False]
 ...
 [False False False ... False False False]
 [False False False ... False False False]
 [False False False ... False False False]]

и еще раз хочу отметить, что я ожидаю, что он вообще не будет использовать циклы for. Спасибо.

🤔 А знаете ли вы, что...
Python поддерживает параллельное и асинхронное программирование с помощью модулей asyncio и multiprocessing.


1
52
1

Ответ:

Решено

Вы можете просто запустить

mat_compare*255

что дает, например

array([[  0,   0,   0, ...,   0,   0,   0],
       [  0,   0,   0, ...,   0,   0,   0],
       [  0,   0,   0, ...,   0,   0,   0],
       ...,
       [  0,   0,   0, ...,   0,   0,   0],
       [  0,   0,   0, ...,   0,   0,   0],
       [255,   0,   0, ...,   0,   0,   0]])