Проверка каждого элемента в 2D-матрице

У меня есть 100x100matrix в numpy, который состоит из 0's и 1's. У меня также есть canvas из квадратов, которые расположены 100x100. Этот canvas соответствует matrix (первый квадрат к element[0,0], второй к [1,0]... идет построчно слева направо). Я должен проверить каждый элемент из matrix, и если это 0, то квадрат должен быть white, а если это 1, то квадрат должен быть black. Я пробовал некоторые методы, но ни один из них не работает. Как я могу проверить каждый элемент матрицы, чтобы решить, является ли цвет черным или белым?

a=0
b=0
m=np.loadtxt("C:\\Users\\DELL\\Desktop\\preklopenie_obrazka.txt", 
skiprows=1 )
for n in range(0,99):
    if m[a][b]==0.0:
        f='white'
    else:
        f='black'
    a+=1
    b+=1

вы должны использовать два цикла для доступа ко всем элементам в 2D-матрице

Ahmed Yousif 29.05.2019 21:29
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам не нужна петля

# create the canvas as a copy of the original matrix
canvas=m.copy()
# convert canvas to have 'object' type so it can contain different types
canvas=canvas.astype('object')
#replace the values with the colors
canvas[canvas==0]='white'
canvas[canvas==1]='black'

Canvas теперь будет массивом numpy с белым для всех элементов m, равным 0, и черным для всех элементов, равных 1.

Используйте np.where(m, 'black', 'white')

user3483203 29.05.2019 19:27
Ответ принят как подходящий

checkout ответ я выбираю имя, который краток и использует потрясающие возможности numpy.

Я оставляю свой ответ здесь только для того, чтобы показать, как правильно выполнить цикл на основе вашего кода:

ваш код ошибочно проверяет только главную диагональ матрицы.

подумайте об этом: после того, как вы закончите с a=1 и b=1, вы увеличите оба, поэтому следующая итерация будет a=2 и b=2, затем a=3 и b=3... и т. д.

также - range не включает в конце, поэтому вы хотите, чтобы диапазон (0,100) получил все числа до 99

вы хотите использовать for дважды (также вам не нужно самостоятельно увеличивать переменную цикла):

m=np.loadtxt("C:\\Users\\DELL\\Desktop\\preklopenie_obrazka.txt", skiprows=1 )
for a in range(0,100):
    for b in range(0,100):
        if m[a][b]==0.0:
            f='white'
        else:
            f='black'
        print(f)  # CHANGE: just use f in whatever way you need

Другие вопросы по теме